我有一个用文本行填充的 StringArray,我需要获取每个字符串数组并将它们转换为字节。如何
Dim splitText() As String = TextRead.Split(Chr(13))
Dim byteArray() as string = Byte.Parse(splitText(0))
一旦我可以将字符串数组的一个元素转换为字节,我将为字符串数组中的每个位置围绕它放置一个循环,但它表示字符串格式对于 byte.parser 不正确。
我有一个用文本行填充的 StringArray,我需要获取每个字符串数组并将它们转换为字节。如何
Dim splitText() As String = TextRead.Split(Chr(13))
Dim byteArray() as string = Byte.Parse(splitText(0))
一旦我可以将字符串数组的一个元素转换为字节,我将为字符串数组中的每个位置围绕它放置一个循环,但它表示字符串格式对于 byte.parser 不正确。
换行符很少是单个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()
看起来您正在尝试解析整行文本,而不是单个字节。为了完成您尝试做的事情,您需要遍历字符串中的每个字符并将其解析为一个字节。但是,您可能会发现使用内置的 .NET 解析方法将字符串转换为字节,而不是走很长的路。例如
Dim yourBytes as Byte() = System.Text.Encoding.UTF8.GetBytes(yourString)
您可以更改编码方法(取决于您的要求),如在此示例中我使用的是 UTF8。
作为旁注,您还可以使用 将整个字节数组反转为字符串GetString
,与GetBytes
.
' 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
你有没有尝试过
Dim someBytes() as Byte = System.Text.ASCIIEncoding.GetBytes(putyourStringhere)