请问如何将2进制文件中的数值转换为unicode字符? 每次读入两个字节,存放到wchar_t[]中,并在最后增加一个L'0',然后直接显示这个UNICODE字符串即可。注意开始的FF FE要忽略,这是UNICODE文件的标志。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 每次读入两个字节,存放到wchar_t[]中,并在最后增加一个L'0',然后直接显示这个UNICODE字符串即可。注意开始的FF FE要忽略,这是UNICODE文件的标志。 请参考以下代码:static unsigned char ucs2encoding(unsigned short unicode, unsigned char *charLength, unsigned char *arrOut){ /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ unsigned char status = 1; unsigned char index = 0; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ if (arrOut != 0) { if (unicode < 256) { arrOut[index++] = *((unsigned char*) (&unicode)); arrOut[index] = 0; } else { arrOut[index++] = *((unsigned char*) (&unicode)); arrOut[index] = *(((unsigned char*) (&unicode)) + 1); } *charLength = 2; } else { status = 0; } return status;}unsigned short Ansii_To_Unicode_String(char *dest, char *src){ unsigned short count = 0; unsigned char charLen = 0; unsigned char arrOut[2]; while (*src != '\0') { ucs2encoding((unsigned short) (*((unsigned char *)src)), &charLen, arrOut); dest[++count] = arrOut[0]; dest[++count] = arrOut[1]; src++; } dest[++count] = '\0'; dest[++count] = '\0'; return count + 1;}unsigned short Unicode_To_Ansii_String(char *dest, char *src){ unsigned short count = 0; while (!((*src == 0) && (*(src + 1) == 0))) { *dest = *(src); src += 2; dest++; count++; } *dest = 0; return count;} 位图双缓冲问题 有谁用过CRichEditCtrl::GetSelText()这个函数,为什么总是空? 关于图像识别分类的问题 ATL制作的ActiveX控件安装问题 各位帮帮看看,用delete删除一个链表时为什么会出错?在线等 虚拟内存问题 高手请进? 各位老大,用system()函数调用外部程序之后如何获得这个程序的输出?(内空,3x) 创建非模态或模态对话框,出现的奇怪错误 谁能给我一些利用ie内核进行开发浏览器的资料,如果有例程,感激不尽!! 关于多桌面操作的一个问题 dllregistersever调用失败错误代码0x80004005
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/ unsigned char status = 1;
unsigned char index = 0; /*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (arrOut != 0)
{ if (unicode < 256)
{
arrOut[index++] = *((unsigned char*) (&unicode));
arrOut[index] = 0; }
else
{
arrOut[index++] = *((unsigned char*) (&unicode));
arrOut[index] = *(((unsigned char*) (&unicode)) + 1); }
*charLength = 2;
}
else
{ status = 0;
} return status;
}unsigned short Ansii_To_Unicode_String(char *dest, char *src)
{
unsigned short count = 0;
unsigned char charLen = 0;
unsigned char arrOut[2]; while (*src != '\0')
{ ucs2encoding((unsigned short) (*((unsigned char *)src)), &charLen, arrOut); dest[++count] = arrOut[0];
dest[++count] = arrOut[1];
src++;
} dest[++count] = '\0';
dest[++count] = '\0';
return count + 1;
}unsigned short Unicode_To_Ansii_String(char *dest, char *src)
{
unsigned short count = 0; while (!((*src == 0) && (*(src + 1) == 0)))
{
*dest = *(src); src += 2;
dest++;
count++;
} *dest = 0;
return count;
}