浮点数,分字节

byte[] a = new byte[4]; a[0] = 182; a[1] = 243; a[2] = 157; a[3] = 63; Console.WriteLine(BitConverter.ToSingle(a, 0)); Console.Read(); ---------------------------------------------------- 事实上a[0]取179-186中的任何一个,在C#里都会输出1.234,不过你可以用下面这个办法反过来求byte[]: Single s = 1.234F; byte[] b = BitConverter.GetBytes(s); foreach (byte dd in b) { Console.WriteLine(dd); }

一、浮点数在内存中的表示
对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit。不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。
无论是单精度还是双精度在存储中都分为三个部分:
1. 符号位(Sign) : 0代表正,1代表为负
2. 指数位(Exponent): 用于存储科学计数法中的指数数据,并且采用移位存储
3. 尾数部分(Mantissa): 尾数部分

即是所谓的IEEE754标准,这也是大多数硬件存储浮点数的标准。单精度浮点数占4个字节,表示范围为:在负数的时候是从
-3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38 。

在C#中的转换函数为:

1,由四个字节的十六机制数组转浮点数:

      byte[] bytes = new byte[4];


      BitConverter.ToSingle(bytes, 0);

2,由浮点数转数组:

byte[] bytes = BitConverter.GetBytes(floatValue);

这种转换方法经常用于串口通讯中,表示范围足够各种传感器数值传输及工控场合,将要发送的浮点数据转换为4个字节的十六机制数,然后由串口发出,在接收端再将其转换为浮点数。

单片机或非.net环境下使用转换程序则不能调用BitConverter类!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值