文本编辑器中的反向字节顺序

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.

来保存它