将 Shorts 数组类型转换为 bytearray

发布于 2025-01-06 08:47:21 字数 111 浏览 1 评论 0原文

我正在尝试将 qt 中的短数组转换为字节数组。 是否有任何功能可用于进行铸造。 如果我必须使用 const char * 进行转换我应该怎么做。 有没有比使用重新解释演员更好的方法

提前致谢。

I am trying to convert a short array into a bytearray in qt.
is there any function available to do the casting.
if i have to use const char * for conversion how should i do it.
and is there any better way than to use reinterpret cast

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南风起 2025-01-13 08:47:21

您只需将字节指针转换为短数组即可将短数组转换为字节

short s[10];
unsigned char *p = reinterpret_cast<unsigned char*>(s);

,然后使用指针遍历数组中的所有字节,在其中将 *p 复制到字节数组,如果你希望。

for ( unsigned char *p = reinterpret_cast<unsigned char*>(s); 
      p < s + sizeof(s); 
      ++p)
{...}

You can convert an array of short to bytes simply by casting a byte pointer to the short array

short s[10];
unsigned char *p = reinterpret_cast<unsigned char*>(s);

then use the pointer to go through all the bytes in the array where you copy the *p to a byte array if u wish.

for ( unsigned char *p = reinterpret_cast<unsigned char*>(s); 
      p < s + sizeof(s); 
      ++p)
{...}
三生一梦 2025-01-13 08:47:21

您可以使用reinterpret_cast来执行此操作,但请注意,您正在使代码变得非常特定于体系结构。使用reinterpret_cast并不能完全保证你的代码是错误的,但它应该敲响警钟。

如果您想要做的是,给定一个 Shorts 数组,生成一个具有相同值的字节数组,您可能想要这样:

void copy(char *to_byte_array, short const *from_short_array, std::size_t size)
{
    for (std::size_t pos = 0; pos != size; ++pos)
    {
         to_byte_array[pos] = from_short_array[pos];
    }
}

如果您使用 Reinterpret_cast,则包含 20、30、40 的 Short 数组将看起来像一个数组包含 0, 20, 0, 30, 0, 40(或者可能是 20, 0, 30, 0, 40, 0,具体取决于体系结构)的字符。

You can use reinterpret_cast to do this, but be aware that you are making your code very architecture specific. Use of reinterpret_cast doesn't exactly guarantee your code is wrong, but it should be ringing warning bells.

If what you want to do is, given an array of shorts, produce an array of bytes with the same values, you probably want this:

void copy(char *to_byte_array, short const *from_short_array, std::size_t size)
{
    for (std::size_t pos = 0; pos != size; ++pos)
    {
         to_byte_array[pos] = from_short_array[pos];
    }
}

if you use reinterpret_cast, your short array containing say 20, 30, 40, will look like an array of chars containing 0, 20, 0, 30, 0, 40 (or possibly 20, 0, 30, 0, 40, 0, depending on architecture).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文