python十进制浮点数转换成十六进制

python十进制浮点数,转换成十六进制,网上的方法大都是使用的float.hex()方法:

number = 26.3
print(float.hex(number))

输出结果:

0x1.a4ccccccccccdp+4

这种方法得到的数据会将单精度浮点数转换成双精度浮点数,预期中占用四个字节的float数据类型变成了占用八个字节。

这时python有一个第三方库,struct,解决了这个问题,可以把十进制四个字节的float数据转换成十六进制四个字节的数据:

import struct
float_value = 26.3
# 将十进制浮点数转换为十六进制浮点数
byte_representation = struct.pack('f', float_value)
hex_representation = byte_representation.hex()
print("输入的十进制浮点数:", float_value)
print("生成的十六进制浮点数:", hex_representation)

输出结果:

输入的十进制浮点数: 26.3
生成的十六进制浮点数: 6666d241

可以看到转换后的数据还是占用四个字节,同时struct库还提供了解码的方法:

import struct
hex_data = "0x6666d241"
# 将十六进制数据解析为十进制浮点数
decimal_float = struct.unpack('f', bytes.fromhex(hex_data[2:]))[0]
print("输入的十六进制数据:", hex_data)
print("解析后的十进制浮点数:", decimal_float)

输出结果:

输入的十六进制数据: 0x6666d241
解析后的十进制浮点数: 26.299999237060547
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值