字节转换在C#中失败

时间:2017-06-28 22:25:31

标签: c# nt

我有一块通过蓝牙发送数据的硬件。 我试图阅读它们,但信息与原始数据不对应。

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

如何解决此问题? 提前谢谢。

0 个答案:

没有答案