给出的是一个比特流(连续的比特串太长而无法立即处理),其结果应该是匹配的以base20数字开头的流。
对于少量位,该过程很简单:
假设最重要的位正确:
110010011 = decimal 403 (1 * 1 + 1 * 2 + 1 * 16 + 1 * 128 + 1 * 256)
403 / 20 = 20 R 3
20 / 20 = 1 R 0
1 / 20 = 0 R 1
Result is [3, 0, 1] = 3 * 1 + 0 * 20 + 1 * 400
但是,如果位数太多而不能一步一步转换为十进制数怎么办?
我的方法是循环执行两个过程:将位转换为十进制,然后将十进制转换为base20数字。此过程要求在遍历这些位时降低乘数(位置值),因为否则它们将迅速增加太多而无法计算。第64位应乘以2 ^ 64,依此类推。