关于串口16进制数据发送处理

rewoniu 2012-11-12 09:52:42
求高手,请问这段话是什么意思?

char CSCOMMDlg::HexChar(char c)
{
if((c>='0')&&(c<='9'))
return c-0x30;
else if((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else
return 0x10;
}
是不是把十六进制换成10进制啊?那返回值都是不变的啊?如第一个,我是0或者3,返回都是0x30了啊。。。求高手解答!!!
...全文
445 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2012-11-15
  • 打赏
  • 举报
回复
是的,看起来t和t1共同构成了一个8位的字节,t为高4位,t1为低4位。
引用 5 楼 rewoniu 的回复:
引用 1 楼 turingo 的回复:把字符转成所对应的16进制数值, '0'~'9'转为0x00~0x09 'A'~'F'转为0x0A~0x0F 'a'~'f'转为0x0A~0x0F 那返回到STR2Hex中,t=HexChar(h); t1=HexChar(l); if((t==16)||(t1==16)) break; else t=t*16……
oKanXue1 2012-11-14
  • 打赏
  • 举报
回复

这个两个函数将输入的10进制转换为16进制的数。经供参考
char exchage(int n)
{
	return "0123456789ABCDE"[n];
}
void HEX(int n)
{int a[100]={0};
char b[100];
int i=0,w=0;
while(n!=0)
{a[i]=n%16;
n=n/16;
w++;
i++;}
for(i=0;i<w;i++)
b[i]=exchage(a[w-i-1]);
b[i]='\0';
if(i==0)
{b[1]='0';
b[0]='0';
b[2]='\0';

}
rewoniu 2012-11-14
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
把字符转成所对应的16进制数值, '0'~'9'转为0x00~0x09 'A'~'F'转为0x0A~0x0F 'a'~'f'转为0x0A~0x0F
那返回到STR2Hex中,t=HexChar(h); t1=HexChar(l); if((t==16)||(t1==16)) break; else t=t*16+t1; i++; data[rlen]=(char)t; rlen++; t可以等于16进制的数吗???
whizer 2012-11-13
  • 打赏
  • 举报
回复
字符转化为16进制的数
AnYidan 2012-11-13
  • 打赏
  • 举报
回复
自己试试就知道了
qq120848369 2012-11-13
  • 打赏
  • 举报
回复
16进制是4位2进制一组的,需要用到位运算。
图灵狗 2012-11-12
  • 打赏
  • 举报
回复
把字符转成所对应的16进制数值, '0'~'9'转为0x00~0x09 'A'~'F'转为0x0A~0x0F 'a'~'f'转为0x0A~0x0F

69,369

社区成员

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

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