hi i am reading in byte array/list from socket... but now i want python to treat the first byte as "unsigned 8 bit integer". how is this possible? and how is it possible to get its integer value as unsigned 8 bit integer?
thanks in advance!
hi i am reading in byte array/list from socket... but now i want python to treat the first byte as "unsigned 8 bit integer". how is this possible? and how is it possible to get its integer value as unsigned 8 bit integer?
thanks in advance!
bytes/bytearray is a sequence of integers. If you just access an element by its index you'll have an integer:
>>> b'abc'
b'abc'
>>> _[0]
97
By their very definition, bytes and bytearrays contain integers in the range(0, 256)
. So they're "unsigned 8-bit integers".
Use the struct module.
import struct
value = struct.unpack('B', data[0])[0]
Note that unpack always returns a tuple, even if you're only unpacking one item.
Also, have a look at this SO question.
Another very reasonable and simple option, if you just need the first byte’s integer value, would be something like the following:
value = ord(data[0])
If you want to unpack all of the elements of your received data at once (and they’re not just a homogeneous array), or if you are dealing with multibyte objects like 32-bit integers, then you’ll need to use something like the struct module.