2011-07-05 93 views
1

我有一個充滿文本行的StringArray,我需要將每個字符串數組並將它們轉換爲字節。如何如何將字符串複製到bytearray

Dim splitText() As String = TextRead.Split(Chr(13)) 
Dim byteArray() as string = Byte.Parse(splitText(0)) 

一次我能得到的字符串數組的一個元素轉換爲字節我會放一個循環它周圍的字符串數組中的每個位置,但它說的字符串格式不爲byte.parser正確。

+0

真的不清楚你想要做什麼,說實話......或者你想要什麼結果字節爲。你爲什麼要將'byteArray'聲明爲'string'? –

+0

如何字節的文字來表示?字節。Parse'方法需要十進制格式的數字,例如'42'。 – Guffa

回答

0

你試過

Dim someBytes() as Byte = System.Text.ASCIIEncoding.GetBytes(putyourStringhere) 
+0

看起來不像VB代碼給我。我有多少次投票贊成在C標記的問題中發佈VB代碼? – dbasnett

+0

哎呀斑點,糾正....好,除非這個網站是一堆肛門的常客,我想永遠不會;) –

+1

你會錯在我下了票,爲什麼,也許你是對的。 – dbasnett

1

它看起來像您正在嘗試而不是單個字節來解析整個文本行。爲了完成你正在嘗試做的事情,你需要遍歷字符串中的每個字符並將其解析爲一個字節。但是,您可以使用內置的.NET解析方法將字符串轉換爲字節,而不是採用長路徑。例如

Dim yourBytes as Byte() = System.Text.Encoding.UTF8.GetBytes(yourString) 

您可以更改編碼方法(取決於您的要求),如本例中我使用的是UTF8。

作爲附帶說明,也可以反向的整個字節數組使用GetString一個字符串,在相同的類中發現作爲GetBytes

+0

看起來不像VB代碼給我。我有多少次投票贊成在C標記的問題中發佈VB代碼? – dbasnett

1
' Dim splitText() As String = TextRead.Split(New String() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries) 
    Dim splitText() As String = TextRead.Split(New Char() {ControlChars.Cr}, StringSplitOptions.RemoveEmptyEntries) 
    For Each foo As String In splitText 
     'make sure to select correct encoding 
     Dim byteArray() As Byte = System.Text.Encoding.ASCII.GetBytes(foo) 
    Next 
2

一個換行符很少是單一的CR字符,這幾乎只使用舊的Macintosh系統,即9和舊版本。公共換行符是CR+LF(Windows)和LF(Unix/OS X)。

如果拆分上錯斷行的字符串,你要麼結束了影響,因爲數組中的單個項目的整個字符串,或留下一半的換行字符的字符串。無論哪種方式,你將無法解析字符串。

對於使用Windows類型行的字符串分解:

Dim splitText() As String = TextRead.Split(ControlChars.CrLf) 

對於使用Unix/OS X型線斷線:

Dim splitText() As String = TextRead.Split(ControlChars.Lf) 

爲了處理這兩種換行符:

Dim splitText() As String = TextRead.Split(New String() { ControlChars.CrLf, ControlChars.Lf }, StringSplitOptions.None) 

要使用當前系統的換行符:

Dim splitText() As String = TextRead.Split(New String() { Envitonment.NewLine }, StringSplitOptions.None) 

如果字符串包含十進制格式的數字,例如13{break}37{break}42,你現在能夠將字符串解析成字節:

Dim byteArray() as Byte = splitText.Select(AddressOf Byte.Parse).ToArray() 

所有作爲一個班輪:

Dim byteArray() as Byte = TextRead.Split(ControlChars.CrLf).Select(AddressOf Byte.Parse).ToArray()