我正在读取传感器的值并以字符串格式接收两个16位十六进制值" 417D"和" 8380"例如。
我似乎无法在C#中找到解析字符串的方法,将它们拆分为保留十六进制数字的字节数组(41,7D,83,80)。
然后,我使用以下内容将IEEE754数字转换为小数,以获得正确的传感器读数值。
txtFloatValue.Text = BitConverter.ToSingle(hex, 0).ToString();
下面的代码有效,但我需要将值作为十六进制数组传递,而不是0x417D8380。
byte[] hex = BitConverter.GetBytes(0x417D8380);
txtFloatValue.Text = BitConverter.ToSingle(hex, 0).ToString();
非常感谢任何建议。我可能会以错误的方式接近它,但IEEE754转换效果很好。
答案 0 :(得分:1)
您可以将十六进制字符串解析为整数,然后使用BitConverter
。例如:
var i = int.Parse("417D8380", NumberStyles.AllowHexSpecifier);
var bytes = BitConverter.GetBytes(i);
var single = BitConverter.ToSingle(bytes, 0); // 15.8446