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; } }