首页 > 代码库 > 3字节浮点数在C#的转换函数
3字节浮点数在C#的转换函数
单片机中,浮点数常用3字节浮点数表示
将浮点数表示成如下形式进行存储:
M为尾数,0<=M<1;
E为阶码,是指数部分;
C为基数,二进制数的C取2。
上位机从单片机中读取到的字节数据不能直接使用,需要进行转换,以下是在C#中用到的一个转换函数
1 //将3字节浮点数据转换成float 2 static double ToSingle3(byte A, byte B, byte C) 3 { 4 double v = 0; 5 int sign0 = (A & 0x80) == 0 ? 1 : -1; // 尾数的符号 6 int sign1 = (A & 0x40) == 0 ? 1 : -1; // 指数的符号 7 int e =sign1*( (sign1 == 1) ? (A & 0x3F) :(((A - 1) & 0x3F) ^ 0x3F) ); //指数 8 double t = Math.Pow(2,e); 9 for (int i = 1; i < 9; i++) 10 { 11 t /= 2; 12 if ((((B >> (8-i)))&1) == 1) 13 { 14 v +=t; 15 } 16 } 17 for (int i = 1; i < 9; i++) 18 { 19 t /= 2; 20 if ((((C >> (8 - i))) & 1) == 1) 21 { 22 v += t; 23 } 24 } 25 return v; 26 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。