文本编辑器中的反向字节顺序
Reversed endianness in text editor
作为使用二进制和 ascii 格式练习的一部分,我使用 C 程序将整数 49 写入文件。在二进制中,它的 4 字节表示是
00000000 00000000 00000000 00110001
在ascii中,前3个字节为空字节(显示为^@
),最后一个字节为字符1
。当我在 vim 中打开它时,我希望看到三个空字节,然后是 1
。相反,我看到它是颠倒的,即 1
后跟三个空字节。为什么会这样?
看来你的平台是little-endian(所有x86都是little-endian)从低到高存储字节,所以49
在内存中存储为
00110001 00000000 00000000 00000000
而不是你所期望的。
如果您想以您希望的格式显示它,您需要使用大端(也称为网络字节顺序)使用 htonl()
function.
来保存它
作为使用二进制和 ascii 格式练习的一部分,我使用 C 程序将整数 49 写入文件。在二进制中,它的 4 字节表示是
00000000 00000000 00000000 00110001
在ascii中,前3个字节为空字节(显示为^@
),最后一个字节为字符1
。当我在 vim 中打开它时,我希望看到三个空字节,然后是 1
。相反,我看到它是颠倒的,即 1
后跟三个空字节。为什么会这样?
看来你的平台是little-endian(所有x86都是little-endian)从低到高存储字节,所以49
在内存中存储为
00110001 00000000 00000000 00000000
而不是你所期望的。
如果您想以您希望的格式显示它,您需要使用大端(也称为网络字节顺序)使用 htonl()
function.