2013-05-07 223 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);