В настоящее время я работаю над программой, которая преобразует строку в «комбинированное целое» (а именно: из строки она будет разделена на два символа за раз, а затем каждый символ в каждая группа будет преобразована в номер ASCII, а затем первый символ будет умножен на 256 (сдвиг 8 бит влево) и добавит второй символ. Он не должен исключать/забывать любой символ внутри строкиArray go out of bounds in VB
Здесь, когда Проблема действительно начать: он бросил IndexOutOfRangeException
Dim input As String = TextBox1.Text.PadLeft(1)
Dim charArr As Char() = input.ToCharArray
Dim intGroup As UShort
Dim strout As String = ""
For index = 0 To charArr.Length - 2 Step 2
Dim i = index
Dim a = charArr(i)
Dim b = charArr(i + 1)
intGroup = CByte(AscW(a)) * 256 + CByte(AscW(b))
strout = strout + CStr(intGroup) + " "
Next
MsgBox(strout)
Мое предположение было то, что я изменить index
внутри WHI петли ch «запрещено».
Любое возможное решение?
Благодаря
Почему, по вашему мнению, 'input.Length + 1' является правильной верхней границей для вашего цикла? –
не уверен, я просто чувствую это так. – ChrisYukinon
Подумайте об этом так: игнорируя «шаг 2» на мгновение - если у вас есть длина строки 2, вы просите цикл for получить доступ к * четырем * индексы (индексы 0, 1, 2 и 3). Это кажется вам правильным? Когда задействованы только два символа? –