Справочная информация:
У меня есть глючная программа, которая декомпилирует определенный набор файлов. Ошибки НЕ связаны с записями, которые он декомпилирует, просто некоторые вспомогательные вещи. Я портирую программу на AHK, чтобы убрать ошибки и добавить некоторые функции.
Проблема:
Каждый конкретный файл, который он декомпилирует, ссылается на структуру отображения для каждой записи в этом файле. Большинство из них легко определить. Я столкнулся с выражением битового поля в одном из них, и я немного запутался в том, как его прочитать:
#if 1
unsigned char vCombinedBits1;
unsigned char vCombinedBits2;
#else
unsigned char iPadding1_1 : 3;
unsigned char vdirect : 1;
unsigned char vitemspecific : 1;
unsigned char vdamagerelated : 1;
unsigned char vSigned : 1;
unsigned char vSendmyspOther : 1;
unsigned char iPading1 : 1;
unsigned char iPading1_1 : 1;
unsigned char vCSvSigned : 1;
unsigned char vSaved : 1;
unsigned char vfCallback : 1;
unsigned char vfMin : 1;
unsigned char vUpdateAnimRate : 1;
unsigned char iPadding1_2 : 1;
#endif
Я не новичок в логике If / Else, но я am
незнакомец для Visual C ++.
Мой предполагаемый конечный результат этого, основанный на this и , что : по сути, я просто прочитаю оба байта независимо от значения vCombinedBits1 и сопоставлю каждый бит переменной Я нуждаюсь.
Правильно ли я предположил, что образец 0x01 0x14 (0000 0001 0001 0100) будет отображаться так:
iPadding1_1 = 0
iPadding1_1 = 0
iPadding1_1 = 0
vdirect = 0
vitemspecific = 0
vdamagerelated =0
vSigned =0
vSendmyspOther = 1
iPading1 = 0
iPading1_1 = 0
vCSvSigned = 0
vSaved = 1
vfCallback = 0
vfMin = 1
vUpdateAnimRate =0
iPadding1_2 =0
Найдена вся структура здесь , #if начинается со строки 649