#include"iostream"
#include"fstream"
using namespace std;
typedef struct tagBITMAPFILE
{
BITMAPFILEHEADER filehead;
BITMAPINFOHEADER infohead;
PALETTEENTRY palette[256];//调色板   
UCHAR *buffer; //存储位图的数据   
}BITMAP_FILE,*BITMAP_FILE_PTR;
int main()
{ifstream readfile;
readfile.open(filename);
readfile.read((char*)&bitmap->filehead,sizeof(bitmap->filehead));
readfile.read((char*)&bitmap->infohead,sizeof(bitmap->infohead));//8位转换调色版
if(bitmap->infohead.biBitCount==8)
{  
  readfile.read((char*)bitmap->palette,256*sizeof(bitmap->palette));
for(int i=0;i<256;i++)
{
int tempcolor=bitmap->palette[i].peRed;
bitmap->palette[i].peRed=bitmap->palette[i].peBlue;
bitmap->palette[i].peBlue=bitmap->palette[i].peRed;
bitmap->palette[i].peFlags=PC_NOCOLLAPSE;
}
}
//分配内存
if(!(bitmap->buffer=new UCHAR[bitmap->infohead.biSizeImage]))
{   
readfile.close();
return false;
}
//读取位图数据到分配的内存
readfile.read((char*)bitmap->buffer,sizeof(bitmap->infohead.biSizeImage));
readfile.close();}
用断点调试 bitmap->palette 调色板前前39个是正常的 索引40-255的都是204
不知道是什么原因帮忙解释下;哪里错了