【转】Python⼗六进制与浮点数互相转换貌似不准,转过来转不回去
在python中虽然很少⽤到⼗六进制或者⼆进制数据,但是当要处理这些数据时,
进制的转换还是必要的,这⾥把到的浮点数转换为⼗六进制,⼗六进制转换为浮点数
的⽅法分享出来。有了⼗六进制数据,⼆进制也好,⼗进制,⼋进制也好,都很⽅便转换了。
1. 浮点数转为⼗六进制数据
>>> struct.pack("<f", 238.3).encode('hex')
'cd4c6e43'
2. ⼗六进制数转为浮点数
>>> import struct
>>> struct.unpack('!f', '41973333'.decode('hex'))[0]
18.899999618530273
>>> struct.unpack('!f', '41995C29'.decode('hex'))[0]
19.170000076293945
>>> struct.unpack('!f', '470FC614'.decode('hex'))[0]
36806.078125
或者
from ctypes import *
python货币转换def convert(s):
i = int(s, 16)                  # convert from hex to a Python int
cp = pointer(c_int(i))          # make this into a c integer
fp = cast(cp, POINTER(c_float))  # cast the int pointer to a float pointer
ts.value        # dereference the pointer, get the float
print convert("41973333")    # returns 1.88999996185302734375E1
print convert("41995C29")    # returns 1.91700000762939453125E1
print convert("470FC614")    # returns 3.6806078125E4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。