我有一个将base10转换为bas32的例程,有趣的是,当我使用在线转换工具仔细检查某些数字时,似乎存在问题。以下是一些数字和我的转化结果:
9990330227991015 = 8RU4S26R8F7
9990330227991016 = 8RU4S26R8F8
9990330227991017 = 8RU4S26R8F9
但是,使用多个在线工具(例如http://www.unitconversion.org/numbers/base-10-to-base-32-conversion.html和http://www.kaagaard.dk/service/convert.htm)的所有3个号码都会返回8RU4S26R8F8。我认为这可能是数字长度,但如果你走得更高或更低,转换确实会改变。
为什么会出现这种情况?
答案 0 :(得分:3)
有趣的是,我刚刚发现这篇文章,因为我刚刚使用我们的转换工具在客户端收到以下内容后,使用Delphi开发的软件完全相同的数字来调查此问题: -
9990330227991015 = 8RU4S26R8F8
9990330227991016 = 8RU4S26R8F8
9990330227991017 = 8RU4S26R8F8
您引用的在线工具不正确的原因与我们的工具不正确相同,基本上不使用浮点数,使用64位整数来更准确地处理大数字。
即将向我们的客户提供修复程序......
答案 1 :(得分:1)
似乎普遍的共识是我所看到的在线工具可能使用实数而不是Int64。使用浮点数会得到上面说明的错误结果。