如何把从串口读到的UNICODD字符串显示成中文。。急

lgyangell 2005-12-15 10:28:34
小弟刚刚接触这个行业,有个问题相大家请教,我用ReadFile将串口缓冲区中的数据读到了一个TCHAE类型的数组里面(例如:“4E0A73ED5462”其中4为表示一个汉字),现在我想将这个字符串输出成汉字(用SDK实现),请问那位大侠可以给予指点,或者给写个小例子。。。。。先谢了。。。。
...全文
170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgyangell 2005-12-16
  • 打赏
  • 举报
回复
多谢~~bjskyhorse() 兄弟~~可惜我最后一天在这个公司了~~感觉我还是更适合.net~~~~~~~~~~~唉~被人踢出公司的感觉真不爽~~~~~~~~~~~~~


哈哈哈哈哈~~~
lgyangell 2005-12-15
  • 打赏
  • 举报
回复
些错~补充 是TCHAR 类型数组
bjskyhorse 2005-12-15
  • 打赏
  • 举报
回复
如下例:

int gsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength)
{
int nDstLength; // UNICODE宽字符数目
WCHAR wchar[128]; // UNICODE串缓冲区

// 字符串-->UNICODE串
memset(wchar,0,128);// I added
nDstLength = ::MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchar, 128);

// 高低字节对调,输出
for(int i=0; i<nDstLength; i++)
{
// 先输出高位字节
*pDst++ = wchar[i] >> 8;
// 后输出低位字节
*pDst++ = wchar[i] & 0xff;
}

// 返回目标编码串长度
return nDstLength * 2;
}
// 字节数据转换为可打印字符串
// 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"
// pSrc: 源数据指针
// pDst: 目标字符串指针
// nSrcLength: 源数据长度
// 返回: 目标字符串长度
int gsmBytes2String(const unsigned char* pSrc, char* pDst, int nSrcLength)
{
const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表

for(int i=0; i<nSrcLength; i++)
{
// 输出低4位
*pDst++ = tab[*pSrc >> 4];

// 输出高4位
*pDst++ = tab[*pSrc & 0x0f];

pSrc++;
}

// 输出字符串加个结束符
*pDst = '\0';

// 返回目标字符串长度
return nSrcLength * 2;


}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧