gpt4 book ai didi

c - 如何将 bmp 文件字节排序为小端,并给我倒序的前 2 个字节?

转载 作者:行者123 更新时间:2023-12-04 02:48:23 25 4
gpt4 key购买 nike

每个人都知道 BMP 文件是小端的。 Wikipedia页面说前 2 个字节必须是 0x424D 以确保此文件是 BMP,但是当我从 BMP 文件中获取前 2 个字节时,它给了我相反的两个字节 0x4D42

我的代码:

FILE *file;
unsigned short bmpidentifier;

if((file = fopen("c://loser.bmp", "rb")) == NULL){
perror("The problem is");
return -1;
}

fread(&bmpidentifier, sizeof(unsigned short), 1, file);
if(bmpidentifier == 0x424D){
printf("The file actually is a bmp file.\n");
} else{
printf("%X\n", bmpidentifier);
printf("The file is not a bmp file.\n");
}

现在,如何将 BMP 文件字节排序为小端,并给我倒转前 2 个字节?

最佳答案

第一个字节是'B'(0x42),第二个字节是'M'(0x4D)

小端 uint16_t 会将其视为 0x4D42,这就是您正在阅读的内容。请尝试以下方法以获得字节序独立的解决方案。

char BM[3];
BM[2] = '\0';
if (fread(BM, 1, 2, file) && (strcmp("BM",BM)==0)) {
printf("The file actually is a bmp file.\n");
}

顺便说一句,Wiki 说“ID 字段 (42h, 4Dh)”,而不是“前 2 个字节必须是 0x424D”。

关于c - 如何将 bmp 文件字节排序为小端,并给我倒序的前 2 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18347465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com