Это необычный способ подойти к основной задаче c «Я хочу массив, в котором есть N чисел, подсчитанных буквами».
Вместо этого давайте создадим функцию, которая может преобразовывать число в любую базу:
Public Shared Function ToBase(base10 As Long, Optional baseChars As String = "0123456789ABCDEFGHIJKLMNOPQRTSUVWXYZ") As String
If baseChars.Length < 2 Then Throw New ArgumentException("baseChars must be at least 2 chars long")
If base10 = 0 Then Return baseChars(0)
Dim isNegative = base10 < 0
Dim radix = baseChars.Length
Dim index As Integer = 64 'because it's how long a string will be if the basechars are 2 long (binary)
Dim chars(index) As Char '65 chars, 64 from above plus one for sign if it's negative
base10 = Math.Abs(base10)
While base10 > 0
chars(index) = baseChars(base10 Mod radix)
base10 \= radix
index -= 1
End While
If isNegative Then
chars(index) = "-"c
index -= 1
End If
Return New String(chars, index + 1, UBound(chars) - index)
End Function
Теперь давайте используем ее для генерации 100 «чисел» в базе 26 (A = 0, B = 1, ..., J = 9, K = 10, ..., Z = 25, А = 26). Следует отметить, что следующим «числом» после «Z» является «BA», а не «AA», по той же причине, что 9 + 1 - это 10, а не 00; «А» - это символ «ноль», поэтому он не ведет. Если это сбивает с толку, учтите, что «Z» не «Z», это «AZ», например, 9 не 9, а 09. Добавление одного к 09 становится 10. Добавление одного к «AZ» означает «BA»
Dim x as New List(Of String)(100)
For i = 0 to 99
x.Add(ToBase(i, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
Next i
Вы получите список с этим в:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ,
CA,CB,CC,CD,CE,CF,CG,CH,CI,CJ,CK,CL,CM,CN,CO,CP,CQ,CR,CS,CT,CU,CV,CW,CX,CY,CZ,
DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR,DS,DT,DU,DV