1
我正在處理包含文本消息的字節數組,但消息中的某些字符是控制字符(即小於0x20)和I想要將它們替換爲解碼爲ASCII時人類可讀的字符序列(例如0x0F
將顯示[TAB]
,而不是實際上是製表符)。所以當我看到它時,我有三種選擇:字節數組替換字節與字節序列效率:迭代和複製與SelectMany
- 將整個東西解碼爲ASCII字符串,然後用
String.Replace()
替換掉我想要的東西。問題在於這些字符似乎只是被解碼爲不可打印的盒子字符或問號,從而失去了它們的實際字節值。 - 遍歷字節數組尋找我的任何控制字符並執行數組插入操作(創建新的更大的數組,複製現有數據塊,寫入新數據塊)。
- 使用
Array.ToList<byte>()
將字節數組轉換爲List
,然後使用IEnumerable.SelectMany()
將控制字符轉換爲可讀字符序列,然後SelectMany
將爲我退出。
所以問題是,哪個是效率最好的選擇?對於IEnumerable
lambda操作的性能影響,我並沒有很好的感覺。我相信選項1在功能上不可行,但我可能是錯的。
這是我如上所述的解決方案1。我仍然不相信這將可靠地用於不可打印的ASCII字符,但假設它是,它是最有效的方法嗎?如果是這樣,爲什麼? – Kongress
通過這種方式,ASCII不可打印的字符0x01 - 0x20不會被改變 - 我們使用這種方法並且經常檢查它...文檔指出它至少對於7Bits來說是乾淨的...在我們的經驗中,我們從來沒有遇到過8位的問題字符...我添加了一個示例替換爲8位值... – Yahia