将具有不同位长的两个大整数可逆编码为一个整数

Acu*_*nus -1 python integer bit-manipulation uniqueidentifier

我想将两个可能具有不同最大位长的大整数编码为一个整数。第一个整数是有符号的(可以是负数),而第二个是无符号的(总是非负数)。如果位长度分别为mn,则返回整数的位长度应小于或等于m + n

只是n(但不是m)是预先已知的,并且是固定的。作为示例,将使用该解决方案将61+位的带符号纳秒时间戳与256位的无符号随机性相结合,以形成带符号的317+位唯一标识符。

我正在使用最新的Python。有一个相关的预先存在的问题,在特殊情况下()m == n解决此问题。

Eri*_*hil 7

由于Ñ是固定的,这个问题很简单:编码(一个b)作为一个 •2 Ñ + b

如果mn不固定,则该问题是不可能的,因为它要求我们将(两位a,一位b)和(一位a,两位b)编码为三位,这意味着我们必须编码十二种可能性(0,0),(0,1),(0,2),(0,3),(1,0),(1,1),(1,2),(1,3 ),(2,0),(2,1),(3,0)和(3,1)的三位八种组合,这是不可能的。