Я хочу открыть двоичный файл, прочитать первый байт файла и, наконец, напечатать шестнадцатеричное значение (в строковом формате) в стандартный вывод (т. Е. Если первый байт 03 шестнадцатеричный, я хочу распечатать 0x03 например). Вывод, который я получаю, не соответствует тому, что я знаю в моем двоичном образце, поэтому мне интересно, может ли кто-нибудь помочь с этим.
Вот код:
#include <stdio.h>
#include <fcntl.h>
int main(int argc, char* argv[])
{
int fd;
char raw_buf[1],str_buf[1];
fd = open(argv[1],O_RDONLY|O_BINARY);
/* Position at beginning */
lseek(fd,0,SEEK_SET);
/* Read one byte */
read(fd,raw_buf,1);
/* Convert to string format */
sprintf(str_buf,"0x%x",raw_buf);
printf("str_buf= <%s>\n",str_buf);
close (fd);
return 0;
}
Программа составлена следующим образом:
gcc rd_byte.c -o rd_byte
и работает следующим образом:
rd_byte BINFILE.bin
Зная, что в примере используемого двоичного файла в качестве первого байта указано 03, я получаю вывод:
str_buf = <0x22cce3>
Что я ожидаю, так это
str_buf = <0x03>
Где ошибка в моем коде?
Спасибо за любую помощь.