类型转换为bytearray的短路数组

时间:2012-02-17 12:02:23

标签: c++ qt casting

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

,就可以将short数组转换为字节数
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)
{...}

答案 1 :(得分:0)

您可以使用reinterpret_cast执行此操作,但请注意,您的代码非常具体。使用reinterpret_cast并不能完全保证您的代码是错误的,但它应该响起警告。

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

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的短数组将看起来像包含0,20,0,30,0,40(或者可能是20,0,30,0,40)的字符数组,0,取决于架构)。