首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - IEEE754 32位到Microchip 32位转换器

Python - IEEE754 32位到Microchip 32位转换器
EN

Stack Overflow用户
提问于 2016-09-18 18:40:19
回答 1查看 71关注 0票数 1

这是我在这个网站上的第一个问题。我需要将Microchip 32位十六进制数转换为IEEE754 32位十六进制数。这两种格式之间的差异:

代码语言:javascript
复制
Microchip = exponent + sign + fraction

IEEE 754 = sign + exponent + fraction

要在两种格式之间进行转换,应对前9位进行循环移位旋转。

问题是如何在Python(2.7)中做到这一点?

示例:

代码语言:javascript
复制
0x833C0000 -> 0b10000011 00111100 00000000 00000000  Microchip 32bit, 

0x41BC0000 -> 0b01000001 10111100 00000000 00000000  IEEE754 32bit
EN

回答 1

Stack Overflow用户

发布于 2017-10-11 06:05:04

解决方案很简单,打印如下:

代码语言:javascript
复制
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 ) ) )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39556750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档