如何将python中的一个float变量转成内存的4个字节值?

在C语言中,float是4个字节,也就是用内存中的4个char值能唯一表示一个float值。如下: typedef union _data{ floa…
关注者
11
被浏览
16,325

3 个回答

1.python的float与c的float完全不同,因此对python而言并不存在于一个float是四个字节的说法。

2.c的float是所谓的单精度浮点数(针对四个字节的说法)你可以把python的float对象降低精度后输出成C风格的四字节形式,用struct.pack就行了,具体格式标记去看看文档吧,我印象中是f但是不是特别确定。注意的是,python的float转换C风格float是可能损失精度的,反之则不会。

3.你也可以手动转换,具体参看x86架构下的浮点数表达结构。

from struct import pack, unpack

float_value = 1.5

float_bytes = pack('f', float_value)

print(float_bytes)

int_value = unpack('L', float_bytes)[0]

print(int_value)

int_bytes = pack('L', int_value)

print(int_bytes)

assert(int_bytes == float_bytes)