从int64转换为字节数组

时间:2014-01-25 15:16:15

标签: c++ memory byte bytearray reinterpret-cast

我写了下面的代码,它将一个long long转换成一个字节数组。

BYTE Buffer[8 +32];
BYTE * Temp = reinterpret_cast<BYTE*> (&Size);
Buffer[0] = Temp[0]; Buffer[1] = Temp[1]; Buffer[2] = Temp[2]; Buffer[3] = Temp[3]; 
Buffer[4] = Temp[4]; Buffer[5] = Temp[5]; Buffer[6] = Temp[6]; Buffer[7] = Temp[7];
//The next 32 bytes (Buffer[8] to Buffer[39]) contains the file name.
WriteFile(hFile,Buffer,40,&dwWrite,NULL);

现在问题是将int64直接转换为字节是否安全?有什么可能的错误?

我很清楚其他更安全的方法(例如Bitshifting),但我希望代码尽可能快。

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是您是否使用当前计算机的字节顺序写入磁盘。如果你在具有不同字节顺序的机器上再次阅读它,你将遇到大麻烦。

这就是为什么比特移位是更好的方法。