0

例如,我正在从传感器读取值并以字符串格式“417D”和“8380”接收两个 16 位十六进制值。

我似乎无法在 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 转换效果很好。

4

1 回答 1

1

您可以将十六进制字符串解析为整数,然后使用BitConverter. 例如:

var i = int.Parse("417D8380", NumberStyles.AllowHexSpecifier);
var bytes = BitConverter.GetBytes(i);
var single = BitConverter.ToSingle(bytes, 0);   // 15.8446
于 2016-01-05T16:12:55.427 回答