我正在從源讀取RAW數據。這個原始數據是一個字節序列。 餘字節序列存儲到我定義爲在以下VB.NET字節的數組:vb.net:使用Unicode將字節數組編碼爲字符串
Dim frame() as Byte
所以上述陣列中的每個元件的範圍是[0-255]。
欲編碼每個這些字節轉換成ASCII的,UTF-8和Unicode所以我遍歷字節陣列(幀),並執行以下根據情況代碼段的代碼:
ASCII:
For idxByte As Integer = 0 To Me.frame.Length - 1
txtRefs(idxByte).Text = Encoding.ASCII.GetString(String.Format("<{0}>", Encoding.GetString(frame, idxByte, 1))
Next
注意:txtRefs是一個文本框的數組,它的長度與框架相同。
和同類其他兩個編碼:
UTF8:
For idxByte As Integer = 0 To Me.frame.Length - 1
txtRefs(idxByte).Text = Encoding.UTF8.GetString(String.Format("<{0}>", Encoding.GetString(frame, idxByte, 1))
Next
統一:
For idxByte As Integer = 0 To Me.frame.Length - 1
txtRefs(idxByte).Text = Encoding.Unicode.GetString(String.Format("<{0}>", Encoding.GetString(frame, idxByte, 1))
Next
ASCII和UTF8編碼似乎確定,但Unicode編碼似乎它不工作,或者我可能不理解Unicode編碼功能所有...
對於unicode,我通過執行上述循環獲得result以下。它是否正確?
是的,我的輸入是單字節每個字符,所以在unicode的情況下,創建一個新的輸入數組與零爲第二個字節正在工作。現在我想知道如果我需要爲UTF-8做同樣的事情,因爲Encoding.UTF8.IsSingleByte返回false,所以在UTF-8的情況下,這是否正確遵循與unicode相同的方法?也就是說,爲第二個字節構建一個帶有零的新數組。 – user1624552
@ user1624552 UTF-8更復雜,因爲它使用可變數量的字節 - 1到6個字節 - 取決於代碼點。 [This](https://en.m.wikipedia.org/wiki/UTF-8#Description)顯示了詳細信息 - 對於值<= 127,單個字節將起作用。我不確定我是否明白爲什麼要這樣做,因爲實際上您只是將值視爲ASCII或單字節OEM編碼。如果你想知道這些字符是如何用不同的編碼進行編碼的,那麼你可以使用Encoding.Unicode.GetBytes(Encoding.ASCII.GetString(frame))''與你想要的任何源/目標編碼。 – Mark
我想要做的是例如:對於單個字節,將其字符resprentation轉換爲不同的編碼ASCII,UTF-8,unicode,....例如,字節97對應於ascii中的字符'a',字節97對應於unicode中的字符X,字節97對應於UTF-8中的字符X等等......等等,範圍爲[0-255] – user1624552