struct.pack输出中字母的含义是什么?

Dd *_* Pp 0 python pack

当我在python的struct模块中将数字更改为十六进制时,

>>> import struct
>>> struct.pack("i",89)
'Y\x00\x00\x00'
>>> struct.pack("i",890)
'z\x03\x00\x00'
>>> struct.pack("i",1890)
'b\x07\x00\x00'
Run Code Online (Sandbox Code Playgroud)

输出中"Y,z,b"的含义是什么?

old*_*inb 5

你没有转换成十六进制.您将整数打包为二进制数据...在本例中为little-endian二进制数据.第一个字符只是原始字节的相应ASCII字符; 例如89Y,122z,98b.

  • 第一pack产生'\x59\x00\x00\x00'对于0x00000059; '\x59''Y'.
  • 第二产生'\x7a\x03\x00\x00'对于0x0000037a; '\x7a''z'.
  • 第三产生'\x62\x07\x00\x00'对于0x00000762; '\x62''b'.

请参阅以下ASCII表.

http://www.asciitable.com/index/asciifull.gif