我必须从文件中读取10个字节,最后4个字节是无符号整数。但是我得到了一个11个字符长的char数组/指针。如何将最后4个字节(末尾没有零终止字符)转换为无符号整数?
//pesudo code
char *p = readBytesFromFile();
unsigned int myInt = 0;
for( int i = 6; i < 10; i++ )
myInt += (int)p[i];
那是对的吗?对我来说似乎不正确。
以下代码可能有效:
myInt = *(reinterpret_cast<unsigned int*>(p + 6));
iff:
sizeof(int) == 4
,这是不是到处保证如果不是,如Dietmar建议的那样,您应该遍历数据(根据字节序向前或向后),然后执行类似的操作
myInt = myInt << 8 | static_cast<unsigned char>(p[i])
这是对齐安全的(应该在每个系统上)。仍要注意第1点和第3点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句