Вам необходимо присвоить «цифру» каждой букве, например:
A = 0 N = 13
B = 1 O = 14
C = 2 P = 15
D = 3 Q = 16
E = 4 R = 17
F = 5 S = 18
G = 6 T = 19
H = 7 U = 20
I = 8 V = 21
J = 9 W = 22
K = 10 X = 23
L = 11 Y = 24
M = 12 Z = 25
Тогда ваш {20,13}
становится UN
.
Преобразование обратно UN -> {20,13} -> (20 * 26 + 13) -> 52
.
В качестве еще одного примера, давайте попробуем число 10163, только что случайно вырванное из воздуха.
Делите это на 26, пока не получите число меньше 26 (то есть дважды), и вы получите 15 с дробной частью 0,03402366.
Умножьте это на 26, и вы получите 0 с дробной частью 0,88461516.
Умножьте на на 26, и вы получите 23 (на самом деле 22.99999416 на моем калькуляторе, но, поскольку первоначальное деление было только двумя шагами, мы остановимся здесь - очень небольшая неточность к тому, что числа с плавающей точкой округляются).
Таким образом, «цифры» - это {15,0,23}
, что является «числом» PAX
. Вау, какое совпадение?
Чтобы преобразовать PAX
обратно в десятичное число, его
P * 26<sup>2</sup> + A * 26<sup>1</sup> + X * 26<sup>0</sup>
или
(15 * 676) + (0 * 26) + 23
= 10140 + 0 + 23
= 10163