2011-07-05 63 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()