我在 SO 上找到了这段代码。
unsigned char * SerializeInt(unsigned char *buffer, int value)
{
/* Write big-endian int value into buffer; assumes 32-bit int and 8-bit char. */
buffer[0] = value >> 24;
buffer[1] = value >> 16;
buffer[2] = value >> 8;
buffer[3] = value;
return buffer + 4;
}
Run Code Online (Sandbox Code Playgroud)
您可以看到代码声称它正在以 Big Endian 方式将整数写入缓冲区。
我的问题是:这个函数在 Little endian 和 Big endian 机器上都能正常工作吗?换句话说,在 LE 和 BE 机器上,它是否以 Big Endian 方式存储要缓冲的数字?如果是,为什么?
无论您的系统的字节序是什么,您的SerializeInt函数都将以value大字节序存储在数组中buffer。它存储为大端,因为它首先写入最重要的字节。请记住,当您评估value它时,它本身没有字节序,就像任何数学值一样。
| 归档时间: |
|
| 查看次数: |
5671 次 |
| 最近记录: |