从串口接收一段十六进制数据中提取特定数据


通过串口接收的数据块:
2D 30 30 30 35 2E 30 B7 8D 0A 53 D4 AC 4E D4 AC 2D 30 30 30 35 2E 30 B7 8D 0A 53 D4 AC 4E D4 AC(重复)

提取需要的数据:2D 30 30 30 35 2E 30 B7,

查了下16进制转字符输出:-0005.37

2 个解决方案

#1


#pragma warning(disable:4305 4309)
#include <stdio.h>
#include <string.h>
char b[]={
0x2D,0x30,0x30,0x30,0x35,0x2E,0x30,0xB7,
0x8D,0x0A,0x53,0xD4,0xAC,0x4E,0xD4,0xAC,
0x2D,0x30,0x30,0x30,0x35,0x2E,0x30,0xB7,
0x8D,0x0A,0x53,0xD4,0xAC,0x4E,0xD4,0xAC,
};
char s[8];
int main() {
    s[7]=0;
    memcpy(s,&b[ 0],7);
    printf("%s\n",s);
    memcpy(s,&b[16],7);
    printf("%s\n",s);
    return 0;
}
//-0005.0
//-0005.0
//

#2


引用 1 楼 zhao4zhong1 的回复:
#pragma warning(disable:4305 4309)
#include <stdio.h>
#include <string.h>
char b[]={
0x2D,0x30,0x30,0x30,0x35,0x2E,0x30,0xB7,
0x8D,0x0A,0x53,0xD4,0xAC,0x4E,0xD4,0xAC,
0x2D,0x30,0x30,0x30,0x35,0x2E,0x30,0xB7,
0x8D,0x0A,0x53,0xD4,0xAC,0x4E,0xD4,0xAC,
};
char s[8];
int main() {
    s[7]=0;
    memcpy(s,&b[ 0],7);
    printf("%s\n",s);
    memcpy(s,&b[16],7);
    printf("%s\n",s);
    return 0;
}
//-0005.0
//-0005.0
//
谢谢。
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告