请问,unsigned char数组怎么转化为CString?

grandi23 2011-08-24 08:43:35
如果定义了一个
unsigned char a[20]={0x40,0xa0,0x32};
怎么将其转换为CString字符串呢?
或者说如果0x40是一个字节,我怎么取出使得0x40为“40”这样两个字节的字符串?求大侠指点
...全文
1170 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
grandi23 2011-08-25
  • 打赏
  • 举报
回复
好的,多谢耐心指点,谢谢了,向你学习了
赵4老师 2011-08-25
  • 打赏
  • 举报
回复
字符串那些事儿:BSTR-LPSTR-LPWSTR-CString-VARIANT-COleVariant-_variant_t-CComBSTR-_bstr_t
http://blog.csdn.net/pizi0475/archive/2010/03/04/5346708.aspx
starfox789 2011-08-24
  • 打赏
  • 举报
回复
如果效率要求不高, CString的FORMAT最简单 。

CString CharToCString(unsigned char* strarray)
{
CString strtemp,strout;
for( ;*strarray!='\0';strarray++)
{
strtemp.Format("%x",*strarray);
strout+=strtemp;
}
return strout;
}
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
unsigned char a[20]={0x40,0xa0,0x32};
unsigned char b[20]={0};
unsigned long outlen = 20;
byte2hex(a, 3, b, &outlen);
CString str = b;
grandi23 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jackyjkchen 的回复:]

引用 15 楼 grandi23 的回复:

怎么输入input是一个unsigned char的数组,输出依然是一个unsigned char型数组呢?能帮我具体写下吗?我还是有些不明,谢谢了,我想把unsigned char a[20]={0x40,0xa0,0x32};变成40A032这样的字符串

你输出的字符串已经是C风格字符串了,可以直接强转成char*

前提是你分配的……
[/Quote]不明百啊,具体写下
starfox789 2011-08-24
  • 打赏
  • 举报
回复

你这成了输出对应值得ASCII码了,应该会出一堆乱码吧[Quote=引用 12 楼 abccode 的回复:]
unsigned char a[20]={0x40,0xa0,0x32};

CString ts;

a[3]=0;
ts.Format("%s",a);


应该 ok 了。
[/Quote]
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 grandi23 的回复:]

怎么输入input是一个unsigned char的数组,输出依然是一个unsigned char型数组呢?能帮我具体写下吗?我还是有些不明,谢谢了,我想把unsigned char a[20]={0x40,0xa0,0x32};变成40A032这样的字符串
[/Quote]
你输出的字符串已经是C风格字符串了,可以直接强转成char*

前提是你分配的空间足够,最后的\0是要你自己家的,我函数里没提供
grandi23 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 abccode 的回复:]

unsigned char a[20]={0x40,0xa0,0x32};

CString ts;

a[3]=0;
ts.Format("%s",a);
MessageBox(ts);

应该 ok 了。
[/Quote]之前用过这种方法,但是溢出了,程序崩溃,不知道咋回事?
grandi23 2011-08-24
  • 打赏
  • 举报
回复
我是VC6
grandi23 2011-08-24
  • 打赏
  • 举报
回复
怎么输入input是一个unsigned char的数组,输出依然是一个unsigned char型数组呢?能帮我具体写下吗?我还是有些不明,谢谢了,我想把unsigned char a[20]={0x40,0xa0,0x32};变成40A032这样的字符串
luciferisnotsatan 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lonworks 的回复:]

cstring里面是不是有一个format方法啊?
lz可以看看具体用法。
[/Quote]
++
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 abccode 的回复:]

unsigned char a[20]={0x40,0xa0,0x32};

CString ts;

a[3]=0;
ts.Format("%s",a);


应该 ok 了。
[/Quote]
楼主是想转ascii码,而且您这个仅能用于vc6
abccode 2011-08-24
  • 打赏
  • 举报
回复
unsigned char a[20]={0x40,0xa0,0x32};

CString ts;

a[3]=0;
ts.Format("%s",a);


应该 ok 了。
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 grandi23 的回复:]

unsigned char *output, unsigned long *outlen传什么值进去啊?比如我这个问题里,能帮我指出来下吗
[/Quote]

output分配一个大于6的数组,并且全部清零

outlen是数组的大小
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lonworks 的回复:]

cstring里面是不是有一个format方法啊?
lz可以看看具体用法。
[/Quote]
效率比sprintf还低
grandi23 2011-08-24
  • 打赏
  • 举报
回复
unsigned char *output, unsigned long *outlen传什么值进去啊?比如我这个问题里,能帮我指出来下吗
LONWORKS 2011-08-24
  • 打赏
  • 举报
回复
cstring里面是不是有一个format方法啊?
lz可以看看具体用法。
grandi23 2011-08-24
  • 打赏
  • 举报
回复
谢谢耐心的指导!我试试,谢谢了。
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 grandi23 的回复:]

这个函数里的num
*p++ = num[input[i] >> 4];
*p++ = num[input[i] & 0x0F];
num没有定义啊,定义的是什么类型的数组啊
[/Quote]
我的错
static const char *num = "0123456789ABCDEF";
局部全局都可以
grandi23 2011-08-24
  • 打赏
  • 举报
回复
这个函数里的num
*p++ = num[input[i] >> 4];
*p++ = num[input[i] & 0x0F];
num没有定义啊,定义的是什么类型的数组啊
加载更多回复(4)

65,179

社区成员

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

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