我有一个结构:
struct JFIF_HEADER
{
WORD marker[2]; // = 0xFFD8FFE0
WORD length; // = 0x0010
BYTE signature[5]; // = "JFIF\0"
BYTE versionhi; // = 1
BYTE versionlo; // = 1
BYTE xyunits; // = 0
WORD xdensity; // = 1
WORD ydensity; // = 1
BYTE thumbnwidth; // = 0
BYTE thumbnheight; // = 0
};
Run Code Online (Sandbox Code Playgroud)
这是我从文件中读取它的方式:
HANDLE file = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
DWORD tmp = 0;
DWORD size = GetFileSize(file, &tmp);
BYTE *DATA = new BYTE[size];
ReadFile(file, DATA, size, &tmp, 0);
JFIF_HEADER header;
memcpy(&header, DATA, sizeof(JFIF_HEADER));
Run Code Online (Sandbox Code Playgroud)
这是我的文件的开头在十六进制编辑器中的样子:
0xFF 0xD8 0xFF 0xE0 0x00 0x10 0x4A 0x46 0x49 0x46 0x00 0x01 0x01 0x00 0x00 0x01
Run Code Online (Sandbox Code Playgroud)
当我打印header.marker时,它会准确显示它应该是什么(0xFFD8FFE0).但是当我打印时header.length,它显示0x1000而不是0x0010.同样的事情是xdensity和ydensity.为什么我在阅读时会收到错误的数据WORD?
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |