C# 将字节[]数组转换为字符串

C# 将字节[]数组转换为字符串,c#,encoding,bytearray,C#,Encoding,Bytearray,我试过这个: byte[] buffer = (byte[])mf.Input; //Here, the buffer comes from a serial input string result = System.Text.Encoding.UTF8.GetString(buffer) string result2 = System.Text.Encoding.ASCII.GetString(buffer); 还有其他类似的方法。但它会返回一些奇怪的字符。。。我如何真正转换它 这

我试过这个:

byte[] buffer = (byte[])mf.Input; 
    //Here, the buffer comes from a serial input
string result = System.Text.Encoding.UTF8.GetString(buffer)
string result2 = System.Text.Encoding.ASCII.GetString(buffer);
还有其他类似的方法。但它会返回一些奇怪的字符。。。我如何真正转换它

这是我得到的值:“�??3?&5?
假设它返回一个
卡ID
值,比如
B54A7WQ912

缓冲区值为:`buffer{byte[12]}

[0]168  
[1]63  
[2]18  
[3]63  
[4]21  
[5]...  
[6]....  
[7]....  
[8]...  
[9]...  
[10]...  
[11]...   
每个都有一个值

更新
现在我可以
RFID
Mifare卡中写入/读取
。但是像
á,ã,á,è这样的特殊字符没有显示,而是显示
。我该怎么修?谢谢


Obs:我正在使用上面的方法进行编码。GetString(byte[])
是正确的方法,您必须选择正确的编码和/或确保发送给您的数据实际上是正确的格式。

这是正确的方法,但如果您没有选择正确的编码,它将无法工作。你绝对确定原始文本不是ANSI或ASCII吗?什么奇怪的字符?缓冲区是否可能部分填满?传输字符串时使用的编码是什么?字符串的编码是什么?数组的值是多少?“奇怪字符”是什么?您提供的前5个字节既不是utf8也不是ascii。提供更多数据和期望值。卡id是10个字符,我们有12个字节。有些东西是不正确的。编码是不正确的。GetString(字节[],0,actualBytesInBuffer)
是一种更正确的方法,而不假设缓冲区真的被填满了?没有像编码这样的方法。GetString
只有编码。GetEncoding更新:我现在可以写/读Mifare RFID卡了。但是当我读到这篇文章时(我在问题上的表现方式),它没有显示像
é,ã,ó,ãÀa
这样的字符,你知道吗?如何修复它?我想正确的方法是:
stringresult2=System.Text.Encoding.ASCII.GetString(buffer,0,buffer.Length)