二进制数据字符串表示解析:为何混用十六进制与ASCII字面量?
为啥二进制数据的字符串表示会混合十六进制和ASCII字符?
先拆解你的例子:你提到的字符串\xfa\xd4\xe4d\x00\x00\x00\x00,对应小端序UNIX时间戳1692718330的8字节二进制数据——把1692718330转成十六进制是0x64E4D4FA,小端序反转后字节序列是0xFA、0xD4、0xE4、0x64、0x00、0x00、0x00、0x00。
现在看每个字节的显示逻辑:
0xFA、0xD4、0xE4:这些字节对应的ASCII字符是不可打印的扩展ASCII符号(没有对应的可见字符),所以工具会用十六进制转义序列\xfa、\xd4、\xe4来表示。0x64:这个字节对应的ASCII是小写字母d,属于可打印的普通字符,为了可读性,工具直接显示成d,而不是写成\x64。0x00:这是ASCII空字符,同样不可打印,所以用\x00表示。
本质上,这是各类工具/编程语言输出二进制字符串时的通用规则:
- 能直接显示成可读的普通ASCII字符(比如字母、数字、常见符号),就直接显示;
- 遇到不可打印字符、或者需要转义的特殊字符(比如反斜杠
\、双引号"),就用十六进制(或八进制)转义序列来表示。
这样做的目的是在保证数据准确的前提下,尽量让字符串更易读,不用全写成一堆\xXX的转义码。
内容的提问来源于stack exchange,提问作者cooleck
相关产品推荐
相关产品推荐

