edit 显示数组报文

s278598290 2013-05-15 10:14:47
我在一个数组中接收到一串这样的16进制的数据,a【0】=02,a【1】=0x0A,a【2】=0xfe,a【3】=0x4b,怎么让这个数组中的这几个数据显示在一个edit文本框中,显示的结果:02 0A FE 4b 中间要用空格分开,求大神帮忙。
...全文
144 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
s278598290 2013-05-17
  • 打赏
  • 举报
回复
能问下13楼的 这段代码运行后的结果是什么吗?能不能麻烦帮忙解释一下代码的意思,谢谢
s278598290 2013-05-16
  • 打赏
  • 举报
回复
_stprintf_s这个函数我不知道怎么用,老是哟哟错误提示,_stprintf_s' : undeclared identifier
mujiok2003 2013-05-16
  • 打赏
  • 举报
回复
引用 9 楼 s278598290 的回复:
5楼的朋友能不能麻烦你解释下你的 函数,和最后得到的结果是什么样的?
"%02X " //16进制大写输出(0-9ABCDEF,而不是0-9abcdef), 至少有2各字符, 不足两个用0补齐
mujiok2003 2013-05-16
  • 打赏
  • 举报
回复
引用 9 楼 s278598290 的回复:
5楼的朋友能不能麻烦你解释下你的 函数,和最后得到的结果是什么样的?
自己运行一下吧。
s278598290 2013-05-16
  • 打赏
  • 举报
回复
5楼的朋友能不能麻烦你解释下你的 函数,和最后得到的结果是什么样的?
赵4老师 2013-05-16
  • 打赏
  • 举报
回复
void HexDump(char *buf,int len) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%04x -",i);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
xiaohuh421 2013-05-15
  • 打赏
  • 举报
回复
给你写个函数吧:
CString BufToString(BYTE *pBuf, int len)
{
	CString Str;
	TCHAR buf[0x10] = {0};

	//如果你需要每行显示16个, 可以在里面处理.
	for(int i=0; i<len; ++i)
	{
		_stprintf_s(buf, 0x10, TEXT("%02X "), pBuf[i]);
		Str += buf;
	}
	return Str;
}
starytx 2013-05-15
  • 打赏
  • 举报
回复
引用 3 楼 s278598290 的回复:
我要不断的接收数据,而且每次接收到的数据长度都不一样,要怎么显示呢?
给Edit绑定一个CString变量如m_strEdit,然后每次定义一个临时CString,按照接收的数据长度进行循环并构造这个CString,最后m_strEdit += 临时CString
s278598290 2013-05-15
  • 打赏
  • 举报
回复
我要不断的接收数据,而且每次接收到的数据长度都不一样,要怎么显示呢?
  • 打赏
  • 举报
回复
CString str; str.Format("%02X %02X %02X %02X", a[0], a[1], a[2], a[3]); edt.SetWindowText(str);
buyong 2013-05-15
  • 打赏
  • 举报
回复
sprintf SetWindowText UpdateWindow
s278598290 2013-05-15
  • 打赏
  • 举报
回复
引用 7 楼 starytx 的回复:
UpdateData(TRUE); // 将控件上的数据赋给变量 CString strTemp; for(int i = 0; i != len; ++i) { strTemp.Format("%02X " ,a[i]); m_strEdit += strTemp; } UpdateData(FALSE); // 别忘了这句,将变量中的数据显示到控件
我试了一下 这样还是不可以实现
starytx 2013-05-15
  • 打赏
  • 举报
回复
UpdateData(TRUE); // 将控件上的数据赋给变量 CString strTemp; for(int i = 0; i != len; ++i) { strTemp.Format("%02X " ,a[i]); m_strEdit += strTemp; } UpdateData(FALSE); // 别忘了这句,将变量中的数据显示到控件
s278598290 2013-05-15
  • 打赏
  • 举报
回复
引用 4 楼 starytx 的回复:
引用 3 楼 s278598290 的回复:
我要不断的接收数据,而且每次接收到的数据长度都不一样,要怎么显示呢?
给Edit绑定一个CString变量如m_strEdit,然后每次定义一个临时CString,按照接收的数据长度进行循环并构造这个CString,最后m_strEdit += 临时CString
我的思路就是这样的,但是我的edit文本框显示不出来我想要的内容,能不能麻烦你写几句代码我参考一下,不断接收的数据都放在a【】数组里面(接收到的就是16进制的数,一个数组元素对应一个16进制数),然后让这个a【】数组里面的数据显示出来 。每个16进制数之间要有空格分开。

64,681

社区成员

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

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