VC++环境下做串口调试 16进制通讯,十六进制数据以"0D 17 00 17....."形式接收,怎样能合并为"0D17""0017"呢?求救~~~~

VC++ 16进制文本数据,用VC如何显示?_百度知道
VC++ 16进制文本数据,用VC如何显示?
据是FF8D .....FF9D
标准的JPEG
因为是通过串口分包传过来的.
..是接收到16进制数据存入文本文件
然后用MFC将图片还原
提问者采纳
*p);%X&quotprintf(&; p指针指向你的数据
对不起 我没表达清楚 我是接收到存入文本文件
然后在用MFC将图片还原....
你能帮我解决这个问题么?
那你就按照图片的格式,将接收到的数据按照格式写入文本文件中去,然后最后保存成相应格式文件即可。
比如说 我接受的是FFD8....
这种格式的
我要用MFC把图片读出来
应该怎么操作呢?
比如说是jpg格式的,你可以先用文本格式创建一个12.jpg格式的文件,然后将数据写入这个文件,关闭。
其他类似问题
为您推荐:
其他1条回答
站长团上有产品团购;;另外;
char buf[3];
float f=hextodec(buf);
m_dian1=f/buf[2]=p[3];
sprintf(temp1.Right(21);
stre= strC
buf[0]=p[0];2000;
str1 = temp1 buf[3]=p[4].Left(5);
char temp1[10]; buf[1]=p[1];%f&quot,f);
(char*)(LPCTSTR)stre,&quot
16进制的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁VC++中通过mscomm控件设计串口,串口读回的数据是十六进制的存在Cstring型中,应该怎么取出每位二进制?_百度知道
VC++中通过mscomm控件设计串口,串口读回的数据是十六进制的存在Cstring型中,应该怎么取出每位二进制?
将字符以十六进制送入临时变量strtemp存放
&#47.GetCheck())
strtemp,bt),比如传回的是“A2 47 D2”这样的一组十六进制数,然后能跟我给的一个标准值进行比较是否相同;k&lt,我要取第三位第五位和第七位!可以的;.Format(&quot,我再加分;将数组转换为Cstring型变量
BYTE bt=*(char*)(rxdata+k);VC++中通过mscomm控件设计串口,但是存在一个Cstring型数组里:for(k=0;将字符送入临时变量strtemp存放
m_strRXData+=/&#47,串口读回的数据是十六进制的存在Cstring型数组中。现在我想首先把里面的空格去掉。我想要取其中的几位来做一个数值比较; &#47.Format(&k++) /len,bt),然后把它转成2进制的“”,让他们组成一个新的数组;%02X &quot。请教各位大侠了;字符型
if(m_ctrlHexDisplay。附上mscomm控件设计串口的读回程序如下; ///%c&/ &#47,比如
提问者采纳
直接按位与操作即可转换成2进制无任何意义,白费精力;/ stdio:#include &.h&%x\建议以4字节为单位进行处理 CString str = & /转换成16进制数dwHex /&#47,&101 0100 == 0x0054 DWORD dwNew = dwHex&dwMstdlib。取第几位就将第几位置1;dwNew就是需要的数 printf(&n&/;#include&lt.h&%x&quot,11位(从低位开始计算) DWORD dwMask = 0x0054; '/&#47,8;);取dwHex的第1;
A2 47 B5 93&&#47。参考;&#47,&dwHex).Remove('&#47,7,dwNew);//去除空格 DWORD dwH; sscanf(str,4
您这里写的是一个32位的,用了DWORD类型,如果我要用的是一个40位的,应该用什么格式呢?另外,您这里是“取dwHex的第1,4,7,8,11位(从低位开始计算)”,为什么会是0x0054呢?是不是应该是0x04C9啊?
在VC中有__int64类型的,64位的。超过64位,你就要用2个或更多整型来处理了,处理好高低位顺序即可。注释里写错了,应该是第3,5,7位。
那—int64类型的还可以直接把ABC这些字母型的写进去么?它不是整型的么?会识别不了么?
写字母干嘛?是让你保存十六进制数据的sscanf(str,&%x&,&dwHex)把十六进制字符串写入整型dwHex
提问者评价
谢谢大家的回答。这个回答还有一个问题,Remove函数在6.0里面是不正确的。
来自团队:
其他类似问题
为您推荐:
mscomm控件的相关知识
其他3条回答
#include &iostream&
int atoi(char *s, int base) { // 将base进制的字符串转换为整数
int num = 0;
while(*p) {
if(*p &= 'A') num = base * num + (*p - 'A' + 10);
else if(*p &= 'a') num = base * num + (*p - 'a' + 10);
else num = base * num + (*p - '0');
int main() {
char aData[7][3]; // 假定共7个数据,每个数据2个字节
int data[7];
// 用于存放转换后的数据
int index = 0;
// ...................................
for(index = 0; index & 7; ++index) {
strcpy(aData[i],strtemp.substr(3 * index,2)); //截取数据
data[index] = atoi(aData[i],16); // 转换为十进制数
// .....................
主要思路就是按位操作,““ 即110010三个数 分别与(十六进制)04、10、40进行与运算,然后再重新组数据,你问题中没有说明怎么进行重组,多少位?如果是以此提取奇数位,就用移位,比较好用。提供个思路吧,不求得分,仅供参考。
编程中 就是 数据转换 费神!推荐看书Visual C++_Turbo C串口通信编程实践
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁| Copyright &
. All Rights Reserved .msscom串口编程-十六进制--二进制发送接受数据_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
msscom串口编程-十六进制--二进制发送接受数据
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢}

我要回帖

更多关于 串口调试 16进制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信