文件头格式是这样的
  BitmapFileHeadType = Record
    B,M : Char;
    bfSize : longWord;
    bfReserved1 : Word;
    bfReserved2 : Word;
    bfOffBits : LongWord;
  end;其中:B:='M';
      M:='M';
      bfSize:=29114;
      bfReserved1:=0; 
      bfReserved2:=0;
      bfOffBits:=1078;
按理说保存后文件的16进制是
         424D BC71 0000 0000 0000 3804 0000
但是我用Delphi6和delphi7写出来的确是
         424D 0000 BC71 0000 0000 0000 3804 0000
为什么?

解决方案 »

  1.   

    尝试过sizeof(BitmapFileHeadType)是等于16,奇怪
      

  2.   

    haha ,看我代码
    var
      BH: TBitmapFileHeader;
      BI: TBitmapInfoHeader;
    begin
          FillChar(BH, sizeof(BH), #0);       //填充0空值
          BH.bfType := $4D42;
          BI.biSize := 40;
          BI.biPlanes := 1;
          BI.biBitCount := 16;
          BI.biCompression := BI_BITFIELDS;
          BI.biXPelsPerMeter := 0;
          BI.biYPelsPerMeter := 0;
          BI.biClrUsed := 0;
          BI.biClrImportant := 0;
          BH.bfSize := srcbmp.width * srcbmp.height + sizeOf(BI);
          BI.biWidth := srcbmp.width;
          BI.biHeight := srcbmp.Height;
          BI.biSizeImage := (srcbmp.width * srcbmp.height) * 2;
          BH.bfOffBits := sizeof(BI) + sizeof(BH) + 3 * sizeof(dword);
    end;
      

  3.   

    四字节数据嵌入ASM调BSWAP指令function SwapLong(const Value: Cardinal): Cardinal;
    asm
      BSWAP EAX
    end;