C новичком программиста здесь.
Я пытаюсь открыть файл .obj (содержащий инструкции LC3) и печатать их группами по 2 байта построчно в шестнадцатеричном формате.Я попытался открыть файл и выполнить итерацию по char по char и распечатать в шестнадцатеричном формате, но я не уверен, как сгруппировать байты в группы по 2, чтобы напечатать их вместе.Я также распечатываю группу "fffffff" для байтов, которые приводят к 1 (я полагаю).
void readFile(const char *fileName) {
FILE *file;
file = fopen(fileName, "rb");
char ch;
while ((ch = fgetc(file)) != EOF) {
if (isprint(ch)) {
printf("%x", ch);
}
else {
printf("%02x", ch);
if (ch == '\n') {
fputs("\n", stdout);
}
}
}
fclose(file);
}
Вывод, который я хочу получить:
0x4500
0x2009
0xe209
0xa409
Но я получаю:
0x45
0020
09fffffffe209fffffffa40956
Я понимаю, что гекс печатает лишние "ffffffff" из-за того, что не является неподписанным символом, но я изо всех сил пытаюсь напечатать близко к желаемому выводу.Любая помощь в печати в 2-байтовых группах или как убрать "fffffff", будет с благодарностью, и я действительно изо всех сил.