在python中将double(float)转换为字节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中将double(float)转换为字节相关的知识,希望对你有一定的参考价值。

另见How to convert a float into hex为双至十六进制

import struct

def double_to_hex(f):
    return hex(struct.unpack('<Q', struct.pack('<d', f))[0])

doubleAsHex = double_to_hex(2.1)
print("doubleAsHex (correct):", doubleAsHex)
doubleAsBytes = bytearray.fromhex(doubleAsHex.replace('0x',''))

print("doubleAsBytes (missing first byte):", doubleAsBytes)

输出:

doubleAsHex (correct): 0x4000cccccccccccd
doubleAsBytes (missing first byte): bytearray(b'@x00xccxccxccxccxccxcd')

什么是省略字节的原因?

答案

如您所示:

doubleAsHex (correct): 0x4000cccccccccccd
doubleAsBytes (missing first byte): bytearray(b'@x00xccxccxccxccxccxcd')

如果我们打破字节数组,你将得到以下内容:

[0] => @  # First Byte 
[1] => 00
[2] => cc
[3] => cc
[4] => cc
[5] => cc
[6] => cc
[7] => cd

但是会发生的是打印功能是采用十六进制40,其中ascii是@,它与其他的不一样,因为有数字和十六进制你可以有unil F

以上是关于在python中将double(float)转换为字节的主要内容,如果未能解决你的问题,请参考以下文章

在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。

C#中将string转换为float

在Python DataFrame中将字符串转换为float64 [重复]

如何在Python中将带分数的字符串转换为float

如何将 Python Decimal 实例转换为 C++ double?

将双数转换为浮点数