Эффективный способ интерпретировать каждый байт из файла как целое число - это использовать array
module:
import os
from array import array
a = array("B") # interpret each byte as unsigned integer [0, 255]
with open("telemetry.dat", "rb") as file:
a.fromfile(file, os.path.getsize(file.name))
Если у вас уже есть данные в качестве строки байтов; Вы можете использовать bytearray
или memoryview
(последний ведет себя по-разному в разных версиях Python):
data = b"\xff\x64d"
# a.fromstring(data)
b = bytearray(data)
print(b[0]) # -> 255
Вот соответствующий struct.unpack()
аналог (более общий), который возвращает кортеж:
import struct
data = b"\xff\x64d"
t = struct.unpack(len(data)*"B", data)
print(t[-1]) # -> 100
Для одного байта, представленного в виде строки байтов, вы можете использовать ord()
, предложенный @ jsbueno :
i = ord(b"d") # -> 100