众所周知,在电路和计算机里是按0/1来存储数据的,比如15对应二进制的1111,但是小数是怎么表示呢?
![4e0ad63db4bf9512c8d81227c6ca4809.png](https://i-blog.csdnimg.cn/blog_migrate/c4ef3530199e8f4c4bcf8fbfde701234.jpeg)
数字0.001
我们可以约定一个量程系数, 比如1000, 这样仪表的读数是1,则代表着1/1000=0.001
我们来看一个仪表的说明书,仪表返回数据038F 对应的是十进制的911,量程为10,则实际值为91.1
![97e64cef6138ff4da222f9cf2bc362c8.png](https://i-blog.csdnimg.cn/blog_migrate/276572946784a06f39b61584769d1262.jpeg)
另外还有一种IEEE754 浮点数格式,是用4个字节表示一个32位的浮点数,我们找一个在线转换的网址来试试. 比如3.14 对应的16进制浮点数40 48 F5 C2
![c1fd37c12fd8e4f76638f6357249d574.png](https://i-blog.csdnimg.cn/blog_migrate/c4a638241a81e20c43830dc37dc59450.jpeg)
对应的C#代码就是下面:
//40 48 F5 C2 => 3.14 string value = "4048F5C2";//16进制字符串UInt32 x = Convert.ToUInt32(value, 16);//字符串转16进制32位无符号整数 float fy = BitConverter.ToSingle(BitConverter.GetBytes(x), 0);//IEEE754 字节转换float
//3.14=>4048F5C2 var cc = BitConverter.GetBytes(fy);string HexStr= string.Empty; for (int i = 0; i < 4; i++) { HexStr = Convert.ToString(cc[i], 16).ToUpper() + HexStr; }