【发布时间】:2014-07-29 17:31:38
【问题描述】:
我在任何地方都找不到具体问题的答案,所以我想我会打开一个新问题。
我有一个在 ASCII 和二进制之间转换文本的程序。它通过在第一个数组中查找输入、获取该输入的索引并在第二个数组中查看该索引号来实现此目的,然后将找到的内容写入另一个变量。
代码如下:
Function ConvertBinaryToASCII(ByVal input As String) As String
Dim ASCIIList() As String = {" ", "!", "a", "A", "b", "B", "c", "C", "d", "D", "e", "E", "f", "F", "g", "G", "h", "H", "i", "I", "j", "J", "k", "K", "l", "L", "m", "M", "n", "N", "o", "O", "p", "P", "q", "Q", "r", "R", "s", "S", "t", "T", "u", "U", "v", "V", "w", "W", "x", "X", "y", "Y", "z", "Z"}
Dim BinaryList() As String = {"00100000", "00100001", "01100001", "01000001", "01100010", "01000010", "01100011", "01000011", "01100100", "01000100", "01100101", "01000101", "01100110", "01000110", "01100111", "01000111", "01101000", "01001000", "01101001", "01001001", "01101010", "01001010", "01101011", "01001011", "01101100", "01001100", "01101101", "01001101", "01101110", "01001110", "01101111", "01001111", "01110000", "01010000", "01110001", "01010001", "01110010", "01010010", "01110011", "01010011", "01110100", "01010100", "01110101", "01010101", "01110110", "01010110", "01110111", "01010111", "01111000", "01011000", "01111001", "01011001", "01111010", "01011010"}
Dim BinarySubstrings = Enumerable.Range(0, input.Length \ 8).[Select](Function(i) input.Substring(i * 8, 8)).ToArray()
Dim counter As Integer = 0
Dim result() As String
Dim binaryMatch As Integer
For Each e As String In BinarySubstrings
binaryMatch = Array.IndexOf(BinaryList, e)
result(counter) = ASCIIList(CInt(binaryMatch))
counter += 1
Next
Return String.Join("", result)
End Function
该函数按预期工作,但问题是无论我如何尝试调用或初始化result,它总是给我一些错误,我不知道如何使用它。
【问题讨论】:
-
Dim result() As String缺少数组的大小。也许List(Of String)会更好。 -
如果我手动指定长度,它仍然会报错,如果我尝试将其初始化为
List(Of String),它仍然会报错,错误总是不同的,但总是有错误。跨度> -
问题是没有提到数组的大小或初始化它,所以最好将结果数组声明更改为
Dim result(55) As String,因为数组只有54个成员和一个额外的“”
标签: vb.net