第3个回答 推荐于2016-08-11
十六进制数组转成中英文:
// hex array to wchar_t*
// wchs == NULL, wchsLen as output(the size of wchs will be used)
// error: return -1
int YCodec::HexArray2WChars(char* hexarry, int hexarrylen, wchar_t* wchs, int* wchslen)
{
if(hexarry == NULL || hexarrylen<=0) return -1;
if(wchs == NULL){
*wchslen = hexarrylen/2 + (hexarrylen%2==0 ? 0 : 1);
return 1;
}
memset(wchs, 0, *wchslen * sizeof(wchar_t));
char tmp[3];
char* phex = hexarry;
wchar_t* pwchs = wchs;
for(int i=0; i<hexarrylen; i++){
memset(tmp, 0, 3);
tmp[0] = *phex++;
if(++i >= hexarrylen) break;
tmp[1] = *phex++;
// two char to a hex
unsigned short hex = 0x0;
hex = (tmp[0] & 0xff) << 8;
hex |= tmp[1] & 0xff;
// hex to wchar_t
*pwchs++ = (wchar_t)hex;
}
return 1;
}