如何把buffer里面的内容转换成用16位字符表示?

haisuifeng 2004-12-21 02:46:46
如何把buffer里面的内容转换成用16位字符表示?
...全文
301 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2004-12-22
  • 打赏
  • 举报
回复
buffer里面的不一定都是数字,楼主的意图应该是类似UltraEdit那种二进制显示字符的需求吗?

buffer当中每个数字对应一个ascii数值,用16位表示


char * Convert(char *pBuffer)
{
if ( NULL == pBuffer ) return NULL;
int len = strLen(pBuffer);
char * pTemptarget = NULL;
char * pOut = new char[3*len];
pTempTarget = pOut;
for ( int i=0; i<len; i++, pBuffer++ )
{
sprintf(pTempTarget, "%02X ", *pBuffer);
pTempTarget += 3;
};
return pOut;
};
MyNameEPC 2004-12-21
  • 打赏
  • 举报
回复
1:使用强制转换,然后用 wcout 输出,不过这要求 buffer 里要保证是两个 0 结尾。
2:在不能保证 buffer 里是两个 0 结尾情况下,把 buffer 内容拷贝到另一个 buffer 里,另一个 buffer 的长度是原 buffer 长度 + 2 个字节的长度,最后再用 wcout 输出。
提示:其实 C Runtime 里所有和字符处理有关的函数里都有 Unicode 版本的,当然操作系统自己也有的,比如 Windows 里的 MultiByteToWideChar() 函数。
sunvin 2004-12-21
  • 打赏
  • 举报
回复
/* convert 2 characters into a byte, e.g. FF -> 255 */
int my_strtol(char *ch)
{
int n1, n2;

n1 = (ch[0] >= 'A') ? (ch[0] - 'A' + 10) : (ch[0] - '0');
n2 = (ch[1] >= 'A') ? (ch[1] - 'A' + 10) : (ch[1] - '0');

return (n1 << 4) + n2;
}
goodluckyxl 2004-12-21
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3660/3660820.xml?temp=.7359125
haisuifeng 2004-12-21
  • 打赏
  • 举报
回复
字符的16进制
寻开心 2004-12-21
  • 打赏
  • 举报
回复
unicode string?

MultiByteToWideChar
Michael_555 2004-12-21
  • 打赏
  • 举报
回复
16位的字符?

64,654

社区成员

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

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