知道一个byte数组,4个字节表示一个浮点数。  
如何转为float?
反过来,怎么把float转到byte[4]数组中?

解决方案 »

  1.   

    技术帖class Program
    {
        static void Main(string[] args)
        {
            float f = 12;
            byte[] bytes = BitConverter.GetBytes(f);
            Console.WriteLine(BitConverter.ToString(bytes)); // 去
            Console.WriteLine(BitConverter.ToSingle(bytes, 0)); // 来
            Console.ReadKey();
        }
    }
      

  2.   

                float f = 12.33f;
                unsafe
                {
                    var pf = (byte*)&f;
                    byte[] data = new byte[4] { pf[0], pf[1], pf[2], pf[3] };
                }
      

  3.   

    RPWT...早起的鸟儿有虫吃,哈哈...楼主把分都给他吧,要不伴水又郁闷了...
      

  4.   

    好象串口通讯经常涉及这个.
    1 首先你得判断4个字节的高低位,先低后高 还是先高后低
    2 给你一个字节转10整形的,根据需要你将你的小数部分对应字节除1000,或者100就可以了,返回为float
       
      //先低后高  16进制字节转换10进制数值
       /// <summary>
            /// 16进制字节转换10进制数值
            /// </summary>
            /// <param name="dataVal">字节数组</param>
            /// <returns></returns>
            public static int HexToInt(byte[] dataVal)
            {
                int reVal = -1;            if (dataVal.Length == 2)
                {
                    reVal = (int)dataVal[1] << 8;                reVal += (int)dataVal[0];                return reVal;
                }            if (dataVal.Length == 4)
                {
                    reVal = (int)dataVal[3] << 24;                reVal += (int)dataVal[2] << 16;                reVal += (int)dataVal[1] << 8;                reVal += (int)dataVal[0];
                    return reVal;
                }
                return reVal;
            }
      

  5.   

    反过来转换也是一样如下,你修改下就可以了我这个都是整形转换的 public static byte[] IntToHex(int val, int sizeLengh)
            {
                byte[] reByteVal = new byte[sizeLengh];            if (reByteVal.Length == 2)
                {  //先低后高
                    reByteVal[0] = (byte)val;                reByteVal[1] = (byte)(val >> 8);                return reByteVal;
                }
                if (reByteVal.Length == 4)
                {
                    reByteVal[0] = (byte)val;                reByteVal[1] = (byte)(val >> 8);                reByteVal[2] = (byte)(val >> 16);                reByteVal[3] = (byte)(val >> 24);                return reByteVal;
                }
                return reByteVal;
            }
      

  6.   

    恩,是串口通信,要求的就是低字节在前,高字节在后。 所以我每读取4个字节,转为byte数组后,是不是要反着写? 
      

  7.   

    str = (OutBuf[0] + (OutBuf[1] >> 8) + (OutBuf[2] >> 16) + (OutBuf[3] >> 24)).ToString() 本来这样子就把4字节转为string显示了,现在这4个字节如果是浮点数,怎么转?
      

  8.   

    BitConverter.ToSingle(OutBuf, 0)一句话的事,你不动手测试一下。
      

  9.   

    Array.Reverse(buffer);数组倒序排列。