Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python 2.7 equivalent of built-in method int.from_bytes

I'm trying to make my project python2.7 and 3 compatible and python 3 has the built in method int.from_bytes. Does the equivalent exist in python 2.7 or rather what would be the best way to make this code 2.7 and 3 compatible?

>>> int.from_bytes(b"f483", byteorder="big")
1714698291
like image 804
Fabian Barkhau Avatar asked May 22 '15 17:05

Fabian Barkhau


Video Answer


3 Answers

You can treat it as an encoding (Python 2 specific):

>>> int('f483'.encode('hex'), 16)
1714698291

Or in Python 2 and Python 3:

>>> int(codecs.encode(b'f483', 'hex'), 16)
1714698291

The advantage is the string is not limited to a specific size assumption. The disadvantage is it is unsigned.

like image 176
dawg Avatar answered Oct 23 '22 02:10

dawg


struct.unpack(">i","f483")[0]

maybe?

> means big-endian and i means signed 32 bit int

see also: https://docs.python.org/2/library/struct.html

like image 12
Joran Beasley Avatar answered Oct 23 '22 03:10

Joran Beasley


Use the struct module to unpack your bytes into integers.

import struct
>>> struct.unpack("<L", "y\xcc\xa6\xbb")[0]
3148270713L
like image 7
SanketDG Avatar answered Oct 23 '22 01:10

SanketDG