Python十六进制字节相互转换奇数



我一定遗漏了什么。。。。

np.float32(0xc32).tobytes() # --> `b'x00 CE'`
struct.pack('<f', 0xc32) # --> `b'x00 CE'`

但是以下内容没有转换回来。。。

np.float32(0xc32).tobytes().hex() # --> '00204345'
struct.pack('<f', 0xc32).hex() # --> '00204345'

有人知道这里的错误吗?

正如评论中所指出的,我的错误是关于十六进制字符串的假设。。。进行这种相互转换的正确方法:

np.frombuffer(np.float32(0xc32).tobytes(), dtype=np.float32)
struct.unpack('<f',struct.pack('<f', 0xc32))

问题是因为这是该值的十六进制字符串。当您将其转换为浮点值时,这是该浮点值的十六进制表示。

最新更新