gpt4 book ai didi

python - 将 float 转换为字节数组

转载 作者:太空狗 更新时间:2023-10-29 22:18:23 32 4
gpt4 key购买 nike

所以,我想做的是将 float 转换为字节数组,但我一直没有收到任何输入,而且我的计算机速度极慢/死机。我的代码是

import struct

def float_to_hex(f):
return hex(struct.unpack('<I', struct.pack('<f', f))[0])
value = 5.1 #example value
...
value = bytearray(int(float_to_hex(float(value)), 16)

我在另一篇文章中找到了一个将 float 转换为十六进制的函数

def float_to_hex(f):
return hex(struct.unpack('<I', struct.pack('<f', f))[0])

然后我将它从十六进制转换为整数。这有什么问题?我怎样才能更好地将它从 float 转换为 bin 或 bytearray?

最佳答案

这取决于你想要什么,以及你打算用它做什么。如果你想要的只是一个字节数组,那么:

import struct

value = 5.1

ba = bytearray(struct.pack("f", value))

ba 是字节数组。但是,如果您希望显示十六进制值(我怀疑是这样),那么:

print([ "0x%02x" % b for b in ba ])

编辑:

这给出(对于值 5.1):

['0x33', '0x33', '0xa3', '0x40']

然而,CPython 使用 C 类型 double 来存储小 float (这是有充分理由的),所以:

value = 5.1
ba = bytearray(struct.pack("d", value))
print([ "0x%02x" % b for b in ba ])

给予:

['0x66', '0x66', '0x66', '0x66', '0x66', '0x66', '0x14', '0x40']

关于python - 将 float 转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893206/

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