我有一個字節數組作爲輸入。這應該是符合標準的UTF8 HTML的二進制表示。這是,但大部分時間。有時它也包含嵌入的空值(\x0
字符或NUL
)。這不在我的控制之下。我需要將此字節數組轉換爲字符串。如何將包含零的字節緩衝區轉換爲字符串
到目前爲止已經試過:
- 顯然使用,因爲它停在打黑第一
NUL
Encoding.UTF8.GetString
無法正常工作或一個StreamReader
或TextReader
不工作 - 也停在第一NUL
什麼工作,但相當不雅:
mynewarray = myoldarray.Where(x => x!=0).ToArray();
var output = Encoding.UTF8.GetString(mynewarray);
有沒有更好的方法來做到這一點,除了創建一個新的字節數組跳過NUL
字符,然後使用上面的解決方案之一?字節數組可能相當大,超過2-4 Mb ... MSDN指出字符串實際上可能包含嵌入的NUL
,但並不知道處理這些字符串的最佳方法是什麼。
事實上,'UTF8.GetString(字節[])'不應該在零點停止.. 。但是在那之後,你確實有一個包含''\ 0''的字符串。 – 2012-02-20 17:32:27
我依賴於斷言的長度屬性,它遠小於緩衝區大小。我需要仔細檢查。 – jdehaan 2012-02-20 18:15:46
如果任何擴展字符在其中,字符串的長度將小於緩衝區大小。 – BlueM 2012-02-20 18:22:20