我有带有以下输入的二进制文件(代表十六进制),
0000 1900
我正在使用以下代码将数据读取为整数。
fp = fopen(argv[1], "rb");
if (fp == NULL){
printf("Error - Failed opening the file\n");
return EXIT_FAILURE;
} else{
printf("Disk image file [%s] opened...\n\n", argv[1]);
}
int x = 0;
fread(&x, sizeof(int), 1, fp);
printf("Block count Hex: %x\n", x);
printf("Block count dec: %d\n", x);
在产生输出之后,字节位置似乎被fread函数交换了。
Block count Hex: 190000
Block count dec: 1638400
如果我已经阅读了字节序问题,但这似乎与我得到的输出不匹配。任何帮助找出这一点将不胜感激。
附加问题:
-读取存储在int变量中的十六进制值的最佳方法是什么?我一直在使用%x和pŕintf,我想知道是否有更好的方法来调试我的代码。
最佳答案
为了处理在计算机之间或应用程序之间传输数据时的字节序问题,函数htonl
和ntohl
很有用。