我试图将一个短数组转换为qt中的bytearray。 是否有任何功能可用于进行铸造。 如果我必须使用const char *进行转换我应该怎么做。 并且有没有比使用重新解释演员更好的方法
提前致谢。
答案 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,取决于架构)。