public class ModbusDouble
    {

        /// <summary>
        /// 双精度浮点数转10进制
        /// 默认为double最小数
        /// </summary>
        /// <param name="Hex"></param>
        /// <returns></returns>
        public static double ValueH(string Hex)
        {
            double value = double.MinValue;
            try
            {
                Hex = Hex.PadLeft(16, '0');
                var data = new byte[8];
                for (int i = 0; i < 8; i++)
                {
                    var Byte = Hex.Substring((7 - i) * 2, 2);
                    data[i] = byte.Parse(Byte, System.Globalization.NumberStyles.HexNumber);
                }
                value = BitConverter.ToDouble(data, 0);
            }
            catch
            {

            }
            return value;

        }
        /// <summary>
        /// 10进制转双精度浮点数
        /// 默认为null
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        public static string ValueD(double val)
        {
            string result = null;
            try
            {
                var b = BitConverter.GetBytes(val);
                result = BitConverter.ToString(b.Reverse().ToArray()).Replace("-", "");
            }
            catch
            {

            }
            return result;
        }

    }
    public class ModbusFloat
    {
        /// <summary>
        /// 16进制字符转float
        /// 默认值float最小数
        /// </summary>
        /// <param name="Hex"></param>
        /// <returns></returns>
        public static float ValueF(string Hex)
        {
            float value = float.MinValue;
            try
            {
                Hex = Hex.PadLeft(8, '0');
                var data = new byte[4];
                for (int i = 0; i < 4; i++)
                {
                    var Byte = Hex.Substring((3 - i) * 2, 2);
                    data[i] = byte.Parse(Byte, System.Globalization.NumberStyles.HexNumber);
                }
                value = BitConverter.ToSingle(data, 0);
            }
            catch { }
            return value;

        }
        /// <summary>
        /// 单精度浮点数转16进制
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        public static string ValueH(float val)
        {
            string result = null;
            try
            {
                var b = BitConverter.GetBytes(val);
                result = BitConverter.ToString(b.Reverse().ToArray()).Replace("-", "");
            }
            catch { }
            return result;


        }

    }

 

posted on 2022-04-02 13:19  金科许俊  阅读(811)  评论(0)    收藏  举报