我有一个通过蓝牙发送数据的硬件。我正在尝试阅读它们,但信息与原始数据不符。
我正在使用 ReadByte 接收一一发送的数据。
int i1 = 0;
byte[] datum = new byte[6144];
while (i1 < 6144)
{
datum[i1] = await Task.Run(() => (byte)InmStream.ReadByte());
i1++;
}
string string_ascii = (System.Text.Encoding.ASCII.GetString(datum));
string string_bit = BitConverter.ToString(datum);
string string_base64 = Convert.ToBase64String(datum);
结果:
如果我显示创建的字符串中的元素,我会得到:
string_ascii[0] and [3] = 3 and 3 ([1] and [2] 是 \r & \n)
string_bit[0] and [3] = 3 and 0 ([1] and [2] 是 \r & \n)
string_base64[0] and [3] = M and K ([1] and [2] are \r & \n)
应始终为: 3 和 35(从硬件发送的数据格式:整数\r\n)
显然,如果我尝试将相同的元素转换为整数,结果将不是我所需要的。
ascii[i] = (int)Char.GetNumericValue(string_ascii[i]);
bit[i] = (int)Char.GetNumericValue(string_bit[i]);
base64[i] = (int)Char.GetNumericValue(string_base64[i]);
我得到:
ascii[0] 和 [3] = 3 和 3
位 [0] 和 [3] = 3 和 0
base64[0] 和 [3] = -1 和 -1
PS。我注意到当有 1 位整数时,代码可以正常工作。
我该如何解决 ? 提前致谢。