如何将字符串复制到bytearray

时间:2011-07-05 14:44:12

标签: vb.net visual-studio-2008 byte bytearray string-conversion

我有一个填充了文本行的StringArray,我需要获取每个字符串数组并将它们转换为byte。如何

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

一旦我可以将字符串数组的一个元素转换为Byte,我将为字符串数组中的每个位置放置一个循环,但是它表示字符串格式对于byte.parser不正确。

4 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

看起来您正在尝试解析整行文本,而不是单个字节。为了完成您尝试执行的操作,您需要遍历字符串中的每个字符并将其解析为一个字节。但是,您可能会发现使用内置的.NET解析方法来实现字符串到字节,而不是采用漫长的路径。 e.g。

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

您可以更改编码方法(取决于您的要求),如本示例中我使用的是UTF8。

作为旁注,您还可以使用GetString将整个字节数组反转为字符串,该字符串与GetBytes在同一类中找到。

答案 2 :(得分: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

答案 3 :(得分:0)

你试过吗

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