我有一个Perl脚本,它创建了一个二进制输入文件,我们将其传递给另一组代码。二进制输入文件由数百个不同长度的参数组成。大多数是8位、16位或32位。我正在尝试将Perl脚本转换为Python,而让我感到困惑的是,只有几个24位长的参数
我看了看this forum post,很接近,但不是我需要的
例如。假设输入值是一个整数(10187013)。如何将其压缩到3个字节?如果我这样做:
hexVars = struct.pack("<L", 10187013)
然后写入二进制文件:
binout = open(binFile, "wb")
binout.write(hexVars)
正如预期的那样,它打印出四个字节05 71 9b 00
,我想要的是05 71 9b
。我可以强制它只打包3个字节吗?或者在写出来之前去掉最后一个字节
打包成一个
L
总是给你4个字节,因为这就是L
的意思。使用3个单独的变量(每个变量1个字节),或者,因为您正在转换为字符串,所以只需删除第四个未使用的字节:binFile
的内容如预期:(a)测试;这段代码适用于python2.7和python3.6。)
相关问题 更多 >
编程相关推荐