将 textbox.text 属性 中的十六进制字符串作为 C# 中的十六进制传递给 BitConverter.GetBytes
Passing a hex string in a textbox.text property to BitConverter.GetBytes as hex in C#
我正在从传感器读取值并接收两个 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 转换效果很好。
您可以将十六进制字符串解析为整数,然后使用 BitConverter
。例如:
var i = int.Parse("417D8380", NumberStyles.AllowHexSpecifier);
var bytes = BitConverter.GetBytes(i);
var single = BitConverter.ToSingle(bytes, 0); // 15.8446
我正在从传感器读取值并接收两个 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 转换效果很好。
您可以将十六进制字符串解析为整数,然后使用 BitConverter
。例如:
var i = int.Parse("417D8380", NumberStyles.AllowHexSpecifier);
var bytes = BitConverter.GetBytes(i);
var single = BitConverter.ToSingle(bytes, 0); // 15.8446