根据位图文件头,求BMP文件大小

根据位图文件头,求BMP文件大小

题目描述
根据位图文件头,求文件大小。
输入
输入占一行,以十六进制的形式输入BMP文件的位图文件头。
输出
输出二行:
第1行是用十六进制表示的BMP文件大小 ,加上前导0x(x是小写);
第2行是用十进制表示的BMP文件大小。

样例输入 Copy
42 4D 36 C0 00 00 00 00 00 00 36 00 00 00
样例输出 Copy
0x0000C036
49206

解题前我们可以了解一下bmp文件的相关内容:
bmp文件格式详解

通过比对样例输入输出我们可以发现它只与3~6组字符有关,且为逆序输出,输出第二行为第一行的十进制转化。

代码如下:

#include
#include
#include
int main(){
    char str[41],a[8]={0};
    int i;
    for(i=0;i<41;i++)
        scanf("%c",&str[i]);//输入数据
        printf("0x");
    int sum=0,j=7;
    for(i=15;i>=6;i=i-3){
        if(str[i]!=' ')
        printf("%c%c",str[i],str[i+1]);//一组一组字符逆向输出
        if(str[i]>='A'&&str[i]<='F')
            str[i]=str[i]-'A'+10;//十六进制字母转换
        else
            str[i]=str[i]-'0';
        if(str[i+1]>='A'&&str[i+1]<='F')
            str[i+1]=str[i+1]-'A'+10;
        else
            str[i+1]=str[i+1]-'0';
        sum=sum+(str[i])*pow(16,j)+(str[i+1])*pow(16,j-1);
        j=j-2;
    }
    printf("\n");
    printf("%d",sum);
}

你可能感兴趣的:(趣味程序设计)