我正在开发一个在数字基数之间进行转换的程序。例如八进制是 8,十进制是 10。 字母A
to Z
可以被视为基数 26。
我想将“A”转换为0,Z转换为25,“AA”转换为27,“BA”转换为53。
在开始编码之前,我会在纸上进行编码,以便我了解整个过程。首先,我尝试将 533 转换为基数 26。
什么算法最适合执行此操作?
您需要为每个字母分配一个“数字”,例如:
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。
乘that到 26 岁,你会得到23(实际上在我的计算器上是 22.99999416,但是,由于最初的除法只有两步,所以我们在这里停止 - 非常轻微的不准确是由于浮点数被四舍五入的事实)。
所以“数字”是{15,0,23}
这是“数字”PAX
。哇,什么巧合?
转换PAX
回到十进制,它的
P * 262 + A * 261 + X * 260
or
(15 * 676) + (0 * 26) + 23
= 10140 + 0 + 23
= 10163
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)