Мой процессор имеет обратный порядок следования байтов, который, как мне сказали в документации, соответствует порядку байтов спецификации FAT. Почему же тогда я получаю действительный адрес для BS_jmpBoot, байты 0-3 первого сектора, но не получаю действительного числа для BPB_BytesPerSec, байты 11-12 первого сектора.
116 int fd = open (diskpath, O_RDONLY, S_IROTH);
117
118 read (fd, BS_jmpBoot, 3);
119 printf("BS_jmpBoot = 0x%02x%02x%02x\n", BS_jmpBoot[0], S_jmpBoot[1], S_jmpBoot[2]);
120
121 read (fd, OEMName, 8);
122 OEMName[8] = '\0';
123 printf("OEMName = %s\n", OEMName);
124
125 read (fd, BPB_BytesPerSec, 2);
126 printf("BPB_BytesPerSec = 0x%02x%02x\n",BPB_BytesPerSec[0], BPB_BytesPerSec[1]);
Урожайность
BS_jmpBoot = 0xeb5890 //valid address, while 0x9058eb would not be
OEMName = MSDOS5.0
BPB_BytesPerSec = 0x0002 //Should be 0x0200
Я хотел бы выяснить, почему BS_jmpBoot и OEMName печатаются правильно, а BPB_BytesPerSec - нет. Если бы кто-нибудь мог просветить меня, я был бы очень признателен.
Спасибо
РЕДАКТИРОВАТЬ: Спасибо за помощь всем, это были мои типы, из-за которых все пошло наперекосяк. Я заставил его работать, записав байты в беззнаковое короткое замыкание, как предложил (своего рода) uesp, но мне все же хотелось бы знать, почему это не сработало:
unsigned char BPB_BytesPerSec[2];
...
125 read (fd, BPB_BytesPerSec, 2);
126 printf("BPB_BytesPerSec = 0x%04x\n", *BPB_BytesPerSec);
получено BPB_BytesPerSec = 0x0000
Я хотел бы использовать массивы символов для выделения пространства, потому что я хочу быть уверенным в пространстве, в которое я пишу, на любой машине; или я не должен?
Спасибо еще раз!
read (fd, BS_jmpBoot, 3);
--››read (fd, BS_jmpBoot, 4);
Кстати, ЧТО такоеBS_jmpBoot
? - person wildplasser   schedule 27.11.2014BS_jmpBoot
Но на самом деле (ИМХО правильный метод - прочитать полный 512-байтовый сектор за один проход, а затем выбрать правильные куски. - person wildplasser   schedule 27.11.2014peek_<type>
— в основном для того, чтобы чтение файла, порядок следования байтов и подобные проблемы не загромождали синтаксический анализ. - person Steve314   schedule 27.11.2014