这是我在这个网站上的第一个问题。我需要将Microchip 32位十六进制数转换为IEEE754 32位十六进制数。这两种格式之间的差异:
Microchip = exponent + sign + fraction
IEEE 754 = sign + exponent + fraction要在两种格式之间进行转换,应对前9位进行循环移位旋转。
问题是如何在Python(2.7)中做到这一点?
示例:
0x833C0000 -> 0b10000011 00111100 00000000 00000000 Microchip 32bit,
0x41BC0000 -> 0b01000001 10111100 00000000 00000000 IEEE754 32bit发布于 2017-10-11 06:05:04
解决方案很简单,打印如下:
def formatHex( val ):
return format( val, '#04x' )
def microchip32_2_ieee754( m32 ):
sign = (1 << 31) if m32 & (1 << 23) else 0
expoent = ( m32 & 0xFF000000 ) >> 1
return expoent + sign + (m32 & 0x007FFFFF)
def ieee754_2_microchip32( ieee ):
sign = (1 << 23) if ieee & (1 << 31) else 0
expoent = ( ieee & 0x7F800000 ) << 1
return expoent + sign + (ieee & 0x007FFFFF)
if __name__ == "__main__":
m32 = 0x833C0000;
print "Microchip 32: ", formatHex( m32 )
print "IEEE 754: ", formatHex( microchip32_2_ieee754( m32 ) )
print "Microchip 32: ", formatHex(
ieee754_2_microchip32(
microchip32_2_ieee754( m32 ) ) )https://stackoverflow.com/questions/39556750
复制相似问题