简体   繁体   English

将整数转换回32位十六进制表示形式然后进行浮点运算?

[英]Convert integer back to 32-bit hex representation then to float?

Say I have some binary data that was converted to 32-bit integer instead of 32-bit floating point (little endian), how can I rectify this? 假设我有一些二进制数据已转换为32位整数而不是32位浮点数(小尾数),该如何纠正呢?

For example: 1155186688 should be 1750 float ( 00 C0 DA 44 hex). 例如: 1155186688应该是1750 float( 00 C0 DA 44 hex)。

Struct is used for packing and unpacking types into bytes. Struct用于将类型打包和解压缩为字节。

Convert the integer back to bytes, then into a float: 将整数转换回字节,然后转换为浮点数:

struct.unpack('f', struct.pack('I', 1155186688))[0]

Or the long form: 或长格式:

>>> my_bytes = struct.pack('I', 1155186688) # 'I' = Unsigned Int
b'\x00\xc0\xdaD'
>>> my_float = struct.unpack('f', my_bytes)[0] # 'f' = float
1750 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM