Как скопировать строку в bytearray - PullRequest
1 голос
/ 05 июля 2011

У меня есть StringArray, который заполнен строкой текста, и мне нужно взять каждый массив строк и преобразовать их в байты.Как

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

как только я смогу получить один элемент массива строк для преобразования в байт, я наложу цикл вокруг него для каждой позиции в массиве строк, но он говорит, что формат строки не подходит для байта.parser.

Ответы [ 4 ]

2 голосов
/ 05 июля 2011

Разрыв строки редко представляет собой один символ 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 голос
/ 05 июля 2011

Похоже, вы пытаетесь проанализировать всю строку текста, а не один байт.Для того, чтобы выполнить то, что вы пытаетесь сделать, вам нужно перебрать каждый символ в вашей строке и проанализировать его в байт.Однако вместо длинного маршрута вы можете использовать встроенные методы синтаксического анализа .NET для строки в байтах.например,

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

Вы можете изменить метод кодирования (в зависимости от ваших требований), так как в этом примере я использую UTF8.

В качестве примечания вы также можете полностью перевернутьбайтовый массив в строку с использованием GetString, найденный в том же классе, что и GetBytes.

1 голос
/ 05 июля 2011
    ' 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
0 голосов
/ 05 июля 2011

вы пробовали

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