gpt4 book ai didi

python - python 中的定点二进制解包

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:57 25 4
gpt4 key购买 nike

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

b'\x12\00'

转换为大端二进制形式...

0000000000010010

最后是16-bit fixed-point Q15十进制数形式...

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

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

尝试失败:

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

上面的代码得到了“18”,如果字节表示整数,那就没问题,但它们不表示。

任何帮助/建议将不胜感激。谢谢!

最佳答案

@jasonharper 在问题评论中回答--

The bytes do represent an integer - which has been shifted by 15 bits. Divide by 32768 (2**15) to get the actual Q15 value. (This doesn't match the value you calculated, but that's because you did the math wrong - the two set bits actually have place values of 1/2048 and 1/16384.)

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

struct.unpack('<h', b'\x12\x00')[0] / (2**15)

关于python - python 中的定点二进制解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44397370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com