Форум сайта python.su
0
Привет, народ!
Помогите разобраться с размерами, уже всю голову сломал.
Есть структура:
class AtaCmd(ctypes.Structure): _fields_ = [ ('opcode', ctypes.c_ubyte), ('protocol', ctypes.c_ubyte), ('flags', ctypes.c_ubyte), ('featuresl', ctypes.c_ubyte), ('featuresh', ctypes.c_ubyte), ('sector_countl', ctypes.c_ubyte), ('sector_counth', ctypes.c_ubyte), ('lba_lowl', ctypes.c_ubyte), ('lba_lowh', ctypes.c_ubyte), ('lba_midl', ctypes.c_ubyte), ('lba_midh', ctypes.c_ubyte), ('lba_highl', ctypes.c_ubyte), ('lba_highh', ctypes.c_ubyte), ('device', ctypes.c_ubyte), ('command', ctypes.c_ubyte), ('control', ctypes.c_ubyte)]
class AtaCmd(ctypes.Structure): _fields_ = [ ('opcode', ctypes.c_ubyte), ('protocol', ctypes.c_ubyte), ('flags', ctypes.c_ubyte), ('features', ctypes.c_ushort), ('sector_countl', ctypes.c_ubyte), ('sector_counth', ctypes.c_ubyte), ('lba_lowl', ctypes.c_ubyte), ('lba_lowh', ctypes.c_ubyte), ('lba_midl', ctypes.c_ubyte), ('lba_midh', ctypes.c_ubyte), ('lba_highl', ctypes.c_ubyte), ('lba_highh', ctypes.c_ubyte), ('device', ctypes.c_ubyte), ('command', ctypes.c_ubyte), ('control', ctypes.c_ubyte)]
Офлайн
253
kazenniyНет никакой проблемы. ctypes это типы “такие как в С”. А в C данные лежат не подряд а с выравниванием.
В чем проблема?
Офлайн
0
Огромное спасибо за наводку!
Чтобы решить эту проблему нужно добавть _pack_ = 1 в описание класса.
Офлайн