将19位数字压缩为BASE36 10个字母数字

时间:2016-07-13 00:56:16

标签: compression cobol

在Cobol工作并且有一个18位数字我需要转换成10个字母数字BASE36(15位)。它可能在BASE 80中,但我只有10个字节可用大写...为了减少18位数,我可以使用000000001和9999999999之间的另一个已知数字(它是10位数的帐号,最后是模数ciffer)所以我离开时基本没有压缩任何想法?我必须转换回原来的号码......

2 个答案:

答案 0 :(得分:1)

你不能。 36 10 远小于10 19 (或10 18 ,它是什么?),因此无法代表所有19或基数为10的18位数字,基数为36的10位数字。

答案 1 :(得分:0)

这是在黑暗中拍摄的。您可能知道这一点,但这里是基于10转换公式的基础。假设我的简单原因是你有45678号。从右侧数字的值开始。将它添加到数字左边* base,增加基本功率:

8+(7*36)+(6*36*36)+(5*36*36*36)+(4*36*36*36*36) = 6959780 base 10

当然,您可能必须使代码将字符识别为数值。因此,我的简单。