VC中如何将十六进制数据保存为一个jpg图片文件

我现在有一段十六进制数据,开头为FFD8FFE000104A结尾为FFD9经过其他软件转换可以正确显示图片内容但是我在代码中保存时,文件可以创建,用记事本打开里面全是十六... 我现在有一段十六进制数据,开头为FFD8FFE000104A结尾为FFD9
经过其他软件转换可以正确显示图片内容但是我在代码中保存时,文件可以创建,用记事本打开里面全是十六进制数,但是不能预览不能显示图片,以下是代码

HANDLE hFile = CreateFile(L"D:\\abc.jpg",GENERIC_WRITE,FILE_SHARE_READ,
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)
DWORD dwLen ;
WriteFile(hFile,pData->m_pBuf,pData->m_dwLen,&dwLen,NULL) ; // pData结构中包含十六进制数据及长度,可以确保数据有效
CloseHandle(hFile);

非常棘手的问题困扰了我很多天了,希望哪位高人能够指点一二
展开
 我来答
723323374
2010-12-03
知道答主
回答量:11
采纳率:0%
帮助的人:6.9万
展开全部
把十六进制当ASCII处理了

int CharToInt(char ch)
{
if ((ch >= '0') && (ch <= '9'))
return ch - '0';
else
if((ch >= 'a') && (ch <= 'f'))
return ch - 'a' + 10;
else
if ((ch >= 'A') && (ch <= 'F'))
return ch - 'A' + 10;
else
return -1;
}

BOOL HexToBYTE(BYTE *byteBuf, INT byteLen, char *hexBuf, INT hexLen)
{
if(byteLen > hexLen/2)
return FALSE;
int byte1, byte2;
for(int i = 0; i < byteLen; i++)
{
byte1 = CharToInt(hexBuf[2*i]);
byte2 = CharToInt(hexBuf[2*i + 1]);
if(byte1 == -1 || byte2 == -1)
return FALSE;
byteBuf[i] = byte1 * 16 + byte2;
}
return TRUE;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式