使用'Bf'格式化程序解压缩案例

时间:2018-05-07 15:27:06

标签: python

有人可以向我解释一下吗?为什么unpack表现得像这样(在第一种情况下增加4倍0x00而不是一次)?
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32

struct.pack('Bf', 0, 1342.34)
b'\x00\x00\x00\x00\xe1\xca\xa7D'

struct.pack('B', 0)
b'\x00'

struct.pack('fB', 1342.34, 0)
b'\xe1\xca\xa7D\x00'

struct.pack('Bf', 4, 1342.34)
b'\x04\x00\x00\x00\xe1\xca\xa7D'

struct.pack('fB', 1342.34, 4)
b'\xe1\xca\xa7D\x04'

我可以使用>, <格式化程序,但是:

struct.pack('<Bf', 0, 1342.34)
b'\x00\xe1\xca\xa7D'

struct.pack('>Bf', 0, 1342.34)
b'\x00D\xa7\xca\xe1'

所以我没有得到规则

1 个答案:

答案 0 :(得分:0)

  

默认情况下,C类型以机器的本机格式和字节顺序表示,并在必要时通过跳过填充字节进行正确对齐(根据C编译器使用的规则)。

source