Convert bytes to int?

byte, int, python, python-3.x, type-conversion

Solution

Assuming you're on at least 3.2, there's a built in for this:

`int.from_bytes`( `bytes`, `byteorder`, *, `signed=False` )

...

The argument `bytes` must either be a bytes-like object or an iterable producing bytes.

The `byteorder` argument determines the byte order used to represent the integer. If `byteorder` is `"big"`, the most significant byte is at the beginning of the byte array. If `byteorder` is `"little"`, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder` as the byte order value.

The `signed` argument indicates whether two’s complement is used to represent the integer.

## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024

Problem

I'm currently working on an encryption/decryption program and I need to be able to convert bytes to an integer. I know that: ``` bytes([3]) = b'\x03' ``` Yet I cannot find out how to do the inverse. What am I doing terribly wrong?

Original source

Related problems