linux 下的一个串口问题

我不会Debug 2011-08-01 09:37:51
请问各位:我想把从串口接收来的十六进制字符转换为整形数该怎样编程实现呢?
...全文
71 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-08-01
  • 打赏
  • 举报
回复
char s[]="12 ab-0f,;:c0";
unsigned char b[10];
char *p;
int i,n,r;
p=s;
i=0;
while (1) {
r=sscanf(p,"%2x%n",&b[i],&n);
if (1==r) {
i++;
if (i>=10) break;
p+=n;
} else if (0==r) {
p++;
} else {//EOF==-1==r
break;
}
}
n=i;
for (i=0;i<n;i++) printf("%02x ",b[i]);
printf("\n");
AnYidan 2011-08-01
  • 打赏
  • 举报
回复
可以用指针强制转换,但之前你要保证 大小端正确
icemornings 2011-08-01
  • 打赏
  • 举报
回复
strtol
语法:

#include <stdlib.h>
long strtol( const char *start, char **end, int base );


功能:函数返回带符号的字符串start所表示的长整型数。参数base代表采用的进制方式。指针end 指向start所表示的整型数之后的部分。如果返回值无法用长整型表示,函数则返回LONG_MAX或LONG_MIN. 错误发生时,返回零。
skyxfire 2011-08-01
  • 打赏
  • 举报
回复
呃……没理解你的意思……你直接发的不就是整型数吗?难道是转成字符发送的?
我不会Debug 2011-08-01
  • 打赏
  • 举报
回复
大家再帮忙看看 如果把字符串转换为一组十六进制,也就是说得到十六进制的数存储在数组里面 然后可以对数组操作,截取出我需要的部分 这样的话该怎么办呢 那strtol()不可以实现的了。。。
我不会Debug 2011-08-01
  • 打赏
  • 举报
回复
谢谢各位 已经解决了。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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