4 bytes to int

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sun Mar 18 23:41:53 EDT 2007


En Sun, 18 Mar 2007 23:04:44 -0300, Andres Martinelli <andmarti at gmail.com>  
escribió:

> My simple question is:
> I have an array of 4 bytes, and I want to convert it to the int they  
> form.

You can use the struct module:

py> struct.unpack("i", "\x00\x00\x01\x00")
(65536,)

That's good if you have a string to start from. If your "array of 4 bytes"  
is actually an array.array object, you can get the string using the  
tostring method.
If your 4 bytes are in another format, maybe this function is more  
convenient:

py> def int_from_bytes(b3, b2, b1, b0):
...   "Builds an unsigned int (32bits) from 4 bytes, b3 being the most  
significa
nt byte"
...   return (((((b3 << 8) + b2) << 8) + b1) << 8) + b0
...
py> int_from_bytes(0, 0, 0, 0)
0
py> int_from_bytes(0, 0, 0, 10)
10
py> int_from_bytes(0, 0, 1, 0)
256
py> int_from_bytes(0, 0, 255, 255)
65535
py> int_from_bytes(127, 255, 255, 255)
2147483647
py> int_from_bytes(255, 255, 255, 255)
4294967295L

-- 
Gabriel Genellina




More information about the Python-list mailing list