string类型转化到UCS2类型?

dic_008 2012-05-07 04:58:09
事情是这样的,文本内容存储在string变量中需要转化为UCS2类型
使用了
MultiByteToWideChar
这个函数,控制台打印了一下出现的乱七八糟的。
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dic_008 2012-05-27
  • 打赏
  • 举报
回复
问题都解决了。^.^
dic_008 2012-05-10
  • 打赏
  • 举报
回复
A本应该转化为0041,怎么就转化为' 041'前面的0被空格代替,喵了个咪什么情况??右移高位应该补0才对
啊。
dic_008 2012-05-07
  • 打赏
  • 举报
回复
这就沉了。。。

其实上面的那样转换我在网上也看见相同的代码了,转换后还是不对啊。

我在研究研究
W170532934 2012-05-07
  • 打赏
  • 举报
回复

/*--------------------------------------------------------------*/
// UCS2编码
// 输入: pSrc - 源字符串指针
// nSrcLength - 源字符串长度
// 输出: pDst - 目标编码串指针
// 返回: 目标编码串长度
/*----------------------------------------------------------------*/
int gsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength)
{
int nDstLength; // UNICODE宽字符数目
WCHAR wchar[128]; // UNICODE串缓冲区

// 字符串-->UNICODE串
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;
}
/*----------------------------------------------------*/
// UCS2解码
// 输入: pSrc - 源编码串指针
// nSrcLength - 源编码串长度
// 输出: pDst - 目标字符串指针
// 返回: 目标字符串长度
/*-------------------------------------------------------*/
int gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength)
{
int nDstLength; // UNICODE宽字符数目
WCHAR wchar[128]; // UNICODE串缓冲区

// 高低字节对调,拼成UNICODE
for(int i=0; i<nSrcLength/2; i++)
{
wchar[i] = *pSrc++ << 8; // 先高位字节
wchar[i] |= *pSrc++; // 后低位字节
}

// UNICODE串-->字符串
nDstLength = WideCharToMultiByte(CP_ACP, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL);

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

// 返回目标字符串长度
return nDstLength;
}
SuperLy 2012-05-07
  • 打赏
  • 举报
回复

char TestStrIn[]="Ansi字符串";
WCHAR OutBuff[256];
::MultiByteToWideChar(CP_ACP, 0, TestStrIn, -1, OutBuff, _countof(OutBuff));

64,646

社区成员

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

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