HEX十六进制怎么转换成浮点数 点击:6394 | 回复:4



crazyyin

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:116帖 | 363回
  • 年度积分:0
  • 历史总积分:1066
  • 注册:2002年8月28日
发表于:2006-12-18 12:39:00
楼主
协议中(HEX)为41 23 4a bc,在计算机中应该表示为:bc 4a 23 41,后者即为浮点数10.20575,请教,怎么个算法把后者变成这个浮点值的?



teamo.wan

  • 精华:1帖
  • 求助:0帖
  • 帖子:40帖 | 442回
  • 年度积分:0
  • 历史总积分:732
  • 注册:2005年12月13日
发表于:2006-12-19 12:07:00
1楼
这个东西要人工算的话很麻烦的,没有必要知道怎么算,通过机器自动运算就好了

crazyyin

  • 精华:0帖
  • 求助:1帖
  • 帖子:116帖 | 363回
  • 年度积分:0
  • 历史总积分:1066
  • 注册:2002年8月28日
发表于:2006-12-25 09:07:00
2楼
后来发现,用MODBUS工具发送时,自动产生的校验码可以参考

tomyi

  • 精华:0帖
  • 求助:1帖
  • 帖子:21帖 | 233回
  • 年度积分:0
  • 历史总积分:598
  • 注册:2002年10月30日
发表于:2006-12-25 13:36:00
3楼
这个问题也困扰我很久,其实非常简单,只要强制进行类型转换即可.
c语言实现:
char cByte[4];
cByte[0] = 0xbc;
cByte[1] = 0x4a;
cByte[2] = 0x23;
cByte[3] = 0x41;
float* pfValue=(float*)&cByte[0];



非马甲

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 76回
  • 年度积分:0
  • 历史总积分:816
  • 注册:2002年11月03日
发表于:2006-12-26 09:07:00
4楼
The IEEE 754 floating point formats are broken into three fields. The most significant bit stores the sign of the mantissa, the next group of bits stores the exponent in biased form, and the rest of the bits store the magnitude of the fractional portion of the mantissa. So the number 2.25 would be stored in a basic single-precision number as: 

Bit 31, sign Bit 30-23, exponent Bit 22-0, mantissa
0 01111110 001000000000000000000000


The sign bit is as simple as it gets. Zero denotes a positive number; one denotes a negative number. Flipping the value of this bit flips the sign of the number.
The exponent field needs to represent both positive and negative exponents. To do this, a bias is added to the actual exponent in order to get the stored exponent. For IEEE single-precision floats, this value is 127. 
The mantissa, also known as the significand, represents the precision bits of the number.

热门招聘
相关主题

官方公众号

智造工程师