我知道有很多问题与我的问题有关,但我很难理解如何包装& &;解包工作。
例如,使用struct.pack("!B",14)
可以得到x0e
的值,这基本上是一个单字节二进制。
如何创建一个四字节二进制文件?例如,struct.pack("!B",104277)
应该生成0x00019755
,但我不能让struct.pack("!B",104277)
代码输出0x00019755
我的问题的背景细节
我正在尝试创建一个"4型高分辨率灰度指纹图像"记录,这是NIST标准的一部分。Type-4记录的第一个值是记录的长度(LEN),在本例中为104277位,但是标准规定LEN应该用四字节二进制表示。我的示例数据包含这个值0x00019755
,它已经被转换为四字节二进制,因此符合标准。
参考链接:
- http://code.beckjohnson.com/NistRecordTypes.html
- http://www.nist.gov/itl/csd/biometrics/ansi-nist.cfm
如第7.3.2.2节所述。Python手册中的格式字符,无符号4字节长度的格式代码为L
。
struct.pack("!L", 104277)