在C++ 中直接可以将文件流读进结构体中,最近换了C#开发发现这种转化在C#中还是比较麻烦的,这里做一个备忘
由二进制流到字节数组再到结构体
this.fs = filestream; //打开一个文件流
fs.Seek(0, SeekOrigin.Begin); //找到文件头
BinaryReader biReader = new BinaryReader(fs); //使用二进制读取
Byte[] buff = new Byte[54]; //bmp格式是有54个字节的文件头
//定义一个54大小的byte数组
biReader.Read(buff, 0, 54); //将二进制流的前54个字节读取数组中
IntPtr fileHaderPtr = Marshal.AllocHGlobal(14); //给Ptr分配内存,FileHader是14个字节
Marshal.Copy(buff, 0, fileHaderPtr, 14); //将buff中的字节复制到Ptr
fileHader = (FileHader)Marshal.PtrToStructure(fileHaderPtr,typeof(FileHader));
//Ptr内存空间转换为结构体
Marshal.FreeHGlobal(fileHaderPtr); //释放掉指针
由字节数组到结构体
string outFileName; //输出文件名称
this.fs = new FileStream(outFileName, FileMode.Ope