在Python中将两个32位整数连接为64位长整型

10 投票
5 回答
20956 浏览
提问于 2025-04-16 03:12

我想生成一个64位的整数,用来作为文档的唯一标识符。

一个想法是把用户的ID(这是一个32位的整数)和Unix时间戳(也是一个32位的整数)结合起来,形成一个唯一的64位整数。

举个简单的例子:

把两个4位的数字 00100101 结合起来,形成一个8位的数字 00100101

  1. 这个方案合理吗?
  2. 如果合理的话,我该如何在Python中“连接”这些数字呢?

5 个回答

4

这样做就可以了:

(x << 32) + y
6

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种特定的格式。

比如说,如果你有一个数字字符串“123”,你可能想把它变成一个真正的数字,这样你就可以进行数学运算了。这个过程叫做“类型转换”。

在不同的编程语言中,类型转换的方法可能会有所不同。有的语言会自动帮你转换,有的则需要你手动去做。

总之,理解数据的类型和如何转换它们是编程中非常重要的一部分,这样才能让你的程序正常运行。

foo = <some int>
bar = <some int>

foobar = (foo << 32) + bar
21

把第一个数字向左移动第二个数字所表示的位数,然后再加上第二个数字(或者用位或运算 - 在下面的例子中把 + 替换成 |)。

result = (user_id << 32) + timestamp

关于你缩小后的例子,

>>> x = 0b0010
>>> y = 0b0101
>>> (x << 4) + y
37
>>> 0b00100101
37
>>>

撰写回答