2013-05-07 175 views
0

读一字节的缓冲区:字节缓冲区,字符串

while (...) 
{ 
    builder.Append(Encoding.ASCII.GetString(buffer, index, 1)); 
    ++index; 
} 

我得到以下结果:“20202020202020202020202057363253304b4358”,它看起来像ASCII或HTML字符代码。在C#中获得真正的字符串的最佳和更快的方法是什么?

+5

你是如何获得'buffer'中的值以开始的?一个简短但完整的例子在这里真的很有用。 (另外,你不需要一次追加一个字符......) – 2013-05-07 16:59:18

+0

缓冲区是DeviceIoControl调用的结果,这就是为什么我没有提供任何示例,代码很长并且毫无意义。看起来像字符串以某种方式翻转和编码。 – 2013-05-07 17:10:19

回答

2

虽然我觉得有什么不对您的代码,同时获得该字符串,反正你可以使用

byte[] buf = SoapHexBinary.Parse("20202020202020202020202057363253304b4358").Value; 
var str = Encoding.ASCII.GetString(buf); 

这将返回           W62S0KCX

PS:SoapHexBinary为人熟知System.Runtime.Remoting.Metadata.W3cXsd2001 namespace :)

+0

哈哈没听说过! – 2013-05-07 18:45:53

1

如果您获得了整个缓冲区已,然后简单地尝试:

var myString = Encoding.Default.GetString(byteBuffer);