C# 在C语言中字节到字符串的转换失败#

C# 在C语言中字节到字符串的转换失败#,c#,nt,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.Encodi

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

我使用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);
我得到:

ascii[0]和[3]=3和3

位[0]和[3]=3和0

base64[0]和[3]=-1和-1

另外,我注意到当有1位整数时,代码工作正常

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

关于您所期望的
3
35
是字符串值还是原始字节值。例如,第一个是
0x03
还是
0x33
?如果是字符串值,那么您的第一个
string\u ascii
看起来很好,因为字符0和3实际上是
3
。如果你也选中了字符4,你可能会在那里找到一个
5
(第二个字符是
35
)。请发一篇关于这个的帖子。。您的各种转换尝试非常令人困惑。只有ASCII转换似乎有一半的合理性,并且只有在您知道数据实际上是ASCII(可能是……请参阅上面的第一条注释)的情况下<代码>位转换器提供字节的十六进制表示形式;如果您真的要将相同的字节传递给ASCII转换,就像传递给
位转换器一样,
3
0
是有意义的,但是您不可能在其中获得
\r
\n
。那么Base64呢?不管是什么原因让你认为这是一种解释字节的有用方法?在任何情况下,如果没有一个可靠地重现你的问题的好方法,除了猜测之外,你不会看到任何东西。至少,您需要显示收到的实际字节。“我认为上面的第一条评论可能回答了你的问题,但问题中没有足够的信息可以确定。”理查德皮克特直截了当地说,对愚蠢的问题或类似的事情没有任何判断。谢谢你。所以,你是对的,我应该寻找更多的序列数据,5就在那里,我错过了整个画面。谢谢你的提示。
ascii[i] = (int)Char.GetNumericValue(string_ascii[i]);
bit[i] = (int)Char.GetNumericValue(string_bit[i]);
base64[i] = (int)Char.GetNumericValue(string_base64[i]);