CString转化成unsigned char,请看代码错在什么地方?(急)!

txhby0395 2003-10-30 01:52:32
串口收到的数据为str_receive类型为CString,现在想把它转化成unsigned char str1[]={0xXX,0xXX,0xXX.........}的形式,下面的代码我跟踪了一下,执行完后nchar数组是空的,请问这是怎么一回事啊?
void CCOMTESTDlg::OnButton1()
{
unsigned char str[256];
unsigned char nchar[256];
memset(str,0,sizeof(str));
CString strTemp,str1;
for(int i=0;i<str_receive.GetLength();i++)
{
str[i] = str_receive.GetAt(i);
strTemp.Format("%02X ",str[i]);//转成十六进制
str1+=strTemp;
}
memcpy(nchar,str1,str1.GetLength());
m_edit2.ReplaceSel(str1);//显示在编辑框中
...全文
77 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
phiger 2003-10-30
  • 打赏
  • 举报
回复
用memcpy(dz, str_receive.GetBuffer(Length), Length);
还有str_receive中你已经把它当字符串处理了,可能已经丢掉0x00后面的数据了
txhby0395 2003-10-30
  • 打赏
  • 举报
回复
int Length=str_receive.GetLength();
byte *dz=new byte[Length];
dz=(byte*)str_receive.GetBuffer(Length);
str_receive.ReleaseBuffer();
这段代码可以把str_receive的值赋给byte数组吗?
phiger 2003-10-30
  • 打赏
  • 举报
回复
unsigned char str[]={'h','t','t','p'};
unsigned char str[]={0x68,0x74,0x74,0x70};
这两种写法是一样的!
phiger 2003-10-30
  • 打赏
  • 举报
回复
那是因为你把它当成字符串处理了,字符串遇到'\0'(也就是0x00)就结束了,所以只取了前三个数据,其实后面还有数据,你应该把它当作byte array来处理
txhby0395 2003-10-30
  • 打赏
  • 举报
回复
TO:phiger(phiger)
str数组是一个字符数组
其中的0xXX表示的是16进制数啊!
txhby0395 2003-10-30
  • 打赏
  • 举报
回复
TO:phiger(phiger)
我用"串口调试助手"以十六进制发送的数据"01 10 34 00 00 00 24 00 00 00 04 00 00 00 00 00 00 00 03 00 F9",可是在接收unsigned char数组中只有0---3中有数据,其余为空啊!
phiger 2003-10-30
  • 打赏
  • 举报
回复
unsigned char str[]={'h','t','t','p'}

unsigned char str1[]={0x68,0x74,0x74,0x70}
不是一样的吗?只是写法不同而已!
phiger 2003-10-30
  • 打赏
  • 举报
回复
memcpy(nchar,str1,str1.GetLength());有问题
还有就是unsigned char str[]={0xXX,0xXX,0xXX.........}

你这个str数组是想要一个字符数组,还是字符串数组呀?
txhby0395 2003-10-30
  • 打赏
  • 举报
回复
简单的说就是这样unsigned char str[]={'h','t','t','p'}转化成unsigned char str1[]={0x68,0x74,0x74,0x70}
txhby0395 2003-10-30
  • 打赏
  • 举报
回复
用这段代码可以把str_receive放到str数组中
unsigned char str[256];
memset(str,0,sizeof(str));
strcpy((char *)str,(LPSTR)(LPCTSTR)str_receive);
但是我想把str_receive变量的每个字符转化成十六进制再放入str数组中成为如下这种形式unsigned char str[]={0xXX,0xXX,0xXX.........}
会思考的草 2003-10-30
  • 打赏
  • 举报
回复
CString转换为BYTE肯定会出毛病。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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