如何将大二进制(10000k位)转换为基数3或基数31?

时间:2018-03-15 05:35:45

标签: java c++ algorithm math bits

如何将大二进制(10k位)转换为基数3或基数31? 我知道对于基数16我可以通过从原始数字中取4个字节块来转换数字,这很有效。但是对于3或31基数来说这是可能的,因为它们不是2的因子?

修改

我试图简化上面的问题,但为了清楚起见,认为存在100MB的二进制流,并且您需要将其转换为将被解释为基数31的流。

感谢目前为止的答案。

2 个答案:

答案 0 :(得分:1)

您无法以流媒体方式执行此操作。例如,如果流是big-endian,那么你需要等到输入中的最后一位来区分31 ^ 100001和(31 ^ 100001 - 1),这个差异会影响第一位输出。

答案 1 :(得分:-1)

它可能不是完成工作的最快,最有效的方法,但一种非常简单的方法是使用Java的BigInteger类。

(new BigInteger(hugeBinaryNumberAsString, 2)).toString(3)