views:

70

answers:

3

I want to generate 64 bits long int to serve as unique ID's for documents.

One idea is to combine the user's ID, which is a 32 bit int, with the Unix timestamp, which is another 32 bits int, to form an unique 64 bits long integer.

A scaled-down example would be:

Combine two 4-bit numbers 0010 and 0101 to form the 8-bit number 00100101.

  1. Does this scheme make sense?
  2. If it does, how do I do the "concatenation" of numbers in Python?
+3  A: 

Left shift the first number by the number of bits in the second number, then add (or bitwise OR - replace + with | in the following examples) the second number.

result = (user_id << 32) + timestamp

With respect to your scaled-down example,

>>> x = 0b0010
>>> y = 0b0101
>>> (x << 4) + y
37
>>> 0b00100101
37
>>>
sykora
Couldn't you use | instead of + in this example?
chpwn
Yes, you could - noted.
sykora
+3  A: 

This should do it:

(x << 32) + y
carl
+3  A: 
foo = <some int>
bar = <some int>

foobar = (foo << 32) + bar
Amber