小编fli*_*lix的帖子

什么原因导致0xA4在读取二进制文件时变为0xffffffa4?

在C中加载二进制文件时,我得到了意想不到的结果.

FILE *bin = NULL;
unsigned long file_length = 0;

bin = fopen("vs.bin", "rb");
fseek(bin, 0, SEEK_END);
file_length = ftell(bin);
fseek(bin, 0, SEEK_SET);

char *buffer = (char *)malloc(file_length);
fread(buffer, 1, file_length, bin);

for(unsigned int i = 0; i < file_length; i++) {
    printf("%02x ", buffer[i]);
}
printf("\n");
Run Code Online (Sandbox Code Playgroud)

我在前八个输出值中看到的是:

56 53 48 05 ffffffa4 ffffff8b ffffffef 49
Run Code Online (Sandbox Code Playgroud)

但是当我在十六进制编辑器中打开二进制文件时,我看到的是:

56 53 48 05 A4 8B EF 49
Run Code Online (Sandbox Code Playgroud)

什么会导致这种情况发生?整个过程中发生了更多这种情况,但我认为只分享第一部分就足以说明问题了.

谢谢阅读.

c

1
推荐指数
1
解决办法
83
查看次数

标签 统计

c ×1