注意:我理解比特流在未知持续时间和未知长度内到达的问题,并且应该进行从基数 2 到基数 20 的实时转换。
我不相信这可以一次性完成。问题是基数 20 和基数 2 没有共同点,并且模运算规则不允许干净地解决问题。
(a+b) mod n = ( (a mod n) + (b mod n) ) mod n
(a*b) mod n = ( (a mod n) * (b mod n) ) mod n
(a^m) mod n = ( (a mod n)^m ) mod n
现在,如果您有一个以p和q ( p < q ) 为底数的数字A
A = Sum[a[i] p^i, i=0->n] = Sum[b[i] q^i, i=0->n]
然后我们就知道了b[0] = A mod q
。但是,我们不知道A,因此,上面告诉我们
b[0] = A mod q = Sum[a[i] p^i, i=0->n] mod q
= Sum[ (a[i] p^i) mod q, i=0->n] mod q
= Sum[ ( (a[i] mod q) (p^i mod q) ) mod q, i=0->n] mod q
这意味着:
如果你想知道一个以q为底的数字的最低位b 0,你需要知道全数。
仅当q = p m为
b[0] = A mod q = Sum[a[i] p^i, i=0->n] mod q
= Sum[ (a[i] p^i) mod q, i=0->n] mod q
= Sum[ a[i] p^i, i=0->m-1]
所以简而言之,因为 q = 20 和 p = 2。我不得不说,不,它不能一次完成。此外,请提醒自己,我只谈到了基数 q 中的第一个数字,而不是第 i 个数字。
例如,想象一个 1000 乘以 0 后跟单个 1 的比特流。这类似于数字 2 1000。第一个数字很容易,但要获得任何其他数字......你基本上处于一个相当困难的位置。