一段时间以来,我一直在努力想办法解决这个问题,但却一无所获。我有两个没有符号的整数。这意味着四个字节。
3A BC 00 00它们表示一个浮点值。我希望使用python将它们转换为浮动。我可以使用struct.unpack使用python来完成这一任务。
具体地说:
values = [0x3A, 0xBC, 0x00, 0x00]
struct.unpack('>f', bytes(values))有人能解释一下这个特定的unpack命令吗?
我知道>部件反转位(大端实现)。所以他们将是00 00 BC 3A。f是做什么的?根据文件的意思是浮动..。这是什么意思?我试着省略它,但我得到了struct.error: unpack requires a buffer of 0 bytes
最后,为什么会发生向bytes的转换?
发布于 2022-09-01 23:28:18
struct模块处理python对象和一个连续的字节序列之间的转换。[0x3A, 0xBC, 0x00, 0x00]是一个python整数列表(即对int对象的引用),而不是一个连续的字节序列。bytes对象是一个连续的字节序列,可以在0到255之间使用可迭代的整数进行初始化,所以这是第一步。
现在,python应该如何解释这些字节呢?它们是整数,一串浮标,还是一堆字符?这就是格式字符串的用途。"f"的意思是“给我一个4字节的浮点数”。正如你所注意到的,">“是大端,但它更微妙一些。Python将获取4个字节,然后处理endianness,最后进行浮点转换。假设输入是[0x3A, 0xBC, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44]?格式">ff“将返回2个浮点数。
最后那不是“两个整数”。它是一个符号位、8位指数和23位尾数,是单精度浮点数的标准格式。
https://stackoverflow.com/questions/73576252
复制相似问题