【发布时间】:2016-08-02 05:27:50
【问题描述】:
我正在尝试读取字节。
字节: 0x83 0xF6
这些字节等于 33782。 我需要一个代码来将这些字节转换为 33782。
我已尝试使用此代码:
Encoding.ASCII.GetString(new byte[] { 0x83, 0xF6 });
但它给出了这个作为回应:??
【问题讨论】:
标签: c#
我正在尝试读取字节。
字节: 0x83 0xF6
这些字节等于 33782。 我需要一个代码来将这些字节转换为 33782。
我已尝试使用此代码:
Encoding.ASCII.GetString(new byte[] { 0x83, 0xF6 });
但它给出了这个作为回应:??
【问题讨论】:
标签: c#
你使用了错误的转换,用 ASCII 字符串转换这个字节数组不会给出正确的结果。你得到的原因??是因为值 0xF6、0x83 位于用于在您的情况下进行转换的 ASCII 表之外。
你应该使用 BitConverter.ToUInt16()
var number = BitConverter.ToUInt16(new byte[] { 0xF6, 0x83}, 0).ToString();
虽然对于 Little/Big Endians,您必须先反转字节数组。
【讨论】:
var bytes = new byte[] {0x83, 0xF6}; Array.Reverse(bytes); 这样的东西应该可以工作
也许是这个?
(0x83 * 256 + 0xF6).ToString()
【讨论】:
private string foo = (0x83 * 256 + 0xF6).ToString();