我希望打开一个二进制文件,读取文件的第一个字节,最后将十六进制值(字符串格式)打印到stdout(即,如果第一个字节是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;
}
Run Code Online (Sandbox Code Playgroud)
该计划编制如下:
gcc rd_byte.c -o rd_byte
运行如下:
rd_byte BINFILE.bin
知道使用的样本二进制文件有03作为其第一个字节,我得到输出:
str_buf = <0x22cce3>
我期望的是str_buf = <0x03>
我的代码中的错误在哪里?
感谢您的任何帮助.
c ×1