python中的定点二进制解包

python中的定点二进制解包,python,python-3.x,binary,binaryfiles,unpack,Python,Python 3.x,Binary,Binaryfiles,Unpack,我正在努力解决Python 3.6中的数字格式问题。我的目标是将二进制数据从文件转换成可打印的十进制数。作为一个例子,我需要将两个小的endian字节转换为字节字符串的形式 b'\x12\00' 变成它的大端二进制形式 0000000000010010 最后是它的十进制数形式 (1/4096)+(1/16384)=0.00030517578(基本上,我们已经将上面的2个字节设置为人类可读) 在我失败的尝试中,struct.unpack函数似乎很有希望,但我的低级/数字表示经验目前还不是很成熟 尝

我正在努力解决Python 3.6中的数字格式问题。我的目标是将二进制数据从文件转换成可打印的十进制数。作为一个例子,我需要将两个小的endian字节转换为字节字符串的形式

b'\x12\00'

变成它的大端二进制形式

0000000000010010

最后是它的十进制数形式

(1/4096)+(1/16384)=0.00030517578(基本上,我们已经将上面的2个字节设置为人类可读)

在我失败的尝试中,struct.unpack函数似乎很有希望,但我的低级/数字表示经验目前还不是很成熟

尝试失败:

struct.unpack('<h', b'\x12\x00') # Yields (18,)

struct.unpack(“由@jasonharper在问题注释中回答--


字节确实表示一个整数,该整数已被移位15位。除以32768(2**15)得到实际的Q15值。(这与您计算的值不匹配,但这是因为您的数学计算错误-两个设置位的实际位置值为1/2048和1/16384。)

我通过以下代码获得了正确的值--


struct.unpack('字节确实表示一个整数-已移位15位。除以32768(2**15)得到实际的Q15值。(这与您计算的值不匹配,但这是因为您的数学计算错误-两个设置位的实际位置值为1/2048和1/16384。)@贾森·哈珀:你说得对——接得好!你的解决方案有效,我相信我理解你的方法。谢谢!
struct.unpack('<h', b'\x12\x00')[0] / (2**15)