• 第35月第18天 bmp对齐


    1.

    #pragma pack(push,1)
    typedef struct tagBITMAPFILEHEADER {
        uint16_t    bfType;
        uint32_t    bfSize;
        uint32_t    bfReserved;
        uint32_t    bfOffBits;
    } BITMAPFILEHEADER;
    
    typedef struct tagBITMAPINFOHEADER {
        uint32_t    biSize;
        int32_t     biWidth;
        int32_t     biHeight;
        uint16_t    biPlanes;
        uint16_t    biBitCount;
        uint32_t    biCompression;
        uint32_t    biSizeImage;
        int32_t     biXPelsPerMeter;
        int32_t     biYPelsPerMeter;
        uint32_t    biClrUsed;
        uint32_t    biClrImportant;
    } BITMAPINFOHEADER;
    #pragma pack(pop)
    

      

    按照上面的代码写出来的文件,文件图片打开失败,说文件破损。

    后来才发现BMPFILEHEADER_T这个数据接口的内部变量排序,并没有4字节对齐,导致sizeof(BMPFILEHEADER_T)比预想的大!

    所以直接用宏设置数据结构的字节对齐方式为:1字节对齐。

  • 相关阅读:
    学习进度条64
    学习进度条63
    学习进度条62
    学习进度条61
    学习进度条60
    学习进度条59
    学习进度条58
    学习进度条57
    学习进度条56
    学习进度条55
  • 原文地址:https://www.cnblogs.com/javastart/p/11373309.html
Copyright © 2020-2023  润新知