将textbox.text属性中的十六进制字符串传递给C#中的BitConverter.GetBytes为十六进制

时间:2016-01-05 16:01:55

标签: c# string hex bitconverter

我正在读取传感器的值并以字符串格式接收两个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转换效果很好。

1 个答案:

答案 0 :(得分:1)

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

var i = int.Parse("417D8380", NumberStyles.AllowHexSpecifier);
var bytes = BitConverter.GetBytes(i);
var single = BitConverter.ToSingle(bytes, 0);   // 15.8446