我希望打开一个二进制文件,读取文件的第一个字节,最后将十六进制值(以字符串格式)打印到标准输出(stdout)上(例如,如果第一个字节为03 hex,则我希望打印出0x03)。但是我得到的输出与我的样本二进制文件中所知道的不符,因此我想知道是否有人可以帮助解决这个问题。
以下是代码:
程序编译如下: gcc rd_byte.c -o rd_byte 并如下运行: rd_byte BINFILE.bin 已知样本二进制文件的第一个字节为03,我得到以下输出: str_buf= <0x22cce3> 我期望的是 str_buf= <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> 我的代码哪里出错了? 感谢任何帮助。