Я работаю над структурой полей битов из ctypes в Python, и у меня есть вопрос.
Можно ли записать напрямую в буфер пакета Packet ниже определенного?
from ctypes import c_uint8
class PacketBits(ctypes.LittleEndianStructure):
_fields_ = [
# First byte
("a", ctypes.c_uint8, 4),
("b", ctypes.c_uint8, 3),
("c", ctypes.c_uint8, 1),
# Second byte
("d", ctypes.c_uint8, 5),
("e", ctypes.c_uint8, 3),
# Third byte
("f", ctypes.c_uint8, 4),
("g", ctypes.c_uint8, 4),
# Fourth byte
("h", ctypes.c_uint8, 2),
("i", ctypes.c_uint8, 6),
# Fifth byte
("j", ctypes.c_uint8, 4),
("k", ctypes.c_uint8, 3),
("l", ctypes.c_uint8, 1),
# Sixth byte
("m", ctypes.c_uint8, 5),
("n", ctypes.c_uint8, 3),
# Seventh byte
("o", ctypes.c_uint8, 4),
("p", ctypes.c_uint8, 4),
# Eighth byte
("q", ctypes.c_uint8, 2),
("r", ctypes.c_uint8, 6),
]
class Packet(ctypes.Union):
_fields_ = [("bits", PacketBits),
("binary_data", 8 * c_uint8)]
Я задаю этот вопрос, потому что мне нужно проанализировать поток из 65 байтов с некоторыми определениями битов внутри.
Я пытался установить его напрямую, с помощью bitarray, ... и все методы, которые я пробовал, были неудачными.
У кого-нибудь есть идея?
С уважением.
Юхан