我有一块通过蓝牙发送数据的硬件。 我试图阅读它们,但信息与原始数据不对应。
我使用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]和[3] = 3 和 3 ([1]和[2]是\ r&amp; \ n)
string_bit [0]和[3] = 3 和 0 ([1]和[2]是\ r&amp; \ n)
string_base64 [0]和[3] = M 和 K ([1]和[2]是\ r&amp; \ 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位整数时,代码工作正常。
如何解决此问题? 提前谢谢。