0

我有一个通过蓝牙发送数据的硬件。我正在尝试阅读它们,但信息与原始数据不符。

我正在使用 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 位整数时,代码可以正常工作。

我该如何解决 ? 提前致谢。

4

0 回答 0