我一定遗漏了什么。。。。
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))
问题是因为这是该值的十六进制字符串。当您将其转换为浮点值时,这是该浮点值的十六进制表示。