两个ASCII码转换为一个字节16进制

LINUX-ROS 2015-12-06 12:17:46
碰到一个问题,需要将两个ASCII码字符转换为一个字节16进制,如:字符‘1’和’2‘,经转换后变成0x12; 字符’A‘(或'a')和'B'(或'b')经转换后变为0xAB(或0xab),谢谢指点,
...全文
614 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2015-12-13
  • 打赏
  • 举报
回复
如果允许 A 和 a int HexValue(unsigned char a) { a -= 48;// '0' 0x30 if(a >32) a -=32;// 'a' 0x61 if(a > 9 ) a -= 7;// 'A' 0x41 return a; }
图灵转世 2015-12-12
  • 打赏
  • 举报
回复
楼上正解。谢谢代码分享。
schlafenhamster 2015-12-12
  • 打赏
  • 举报
回复

//
int HexValue(unsigned char a)
{
	a -= 48;
	if(a > 9 ) a -= 7;
	return a;
}
//
int HexStrValue(char str[])
{
	int v=0;
	for(int ii=0 ;ii<(int)strlen(str); ii++)
	{ 
		v <<=4;
		v += HexValue(str[ii]);
	}
	return v;
}
thinkers 2015-12-10
  • 打赏
  • 举报
回复
很好, 注意最后一行 return (a<<4)+b;
worldy 2015-12-06
  • 打赏
  • 举报
回复
很简单滴,假设2个字节放在两个变量A、B中 if(A>='0'&&A<='9') a=A-'0'; else if((A>='A' && A<='F') a=A-'A'+10; else (A>='a' && A<='f')) a=A-'a'+10; if(B>='0'&&B<='9') b=B-'0'; else if((B>='A' && B<='F') b=B-'A'+10; else (B>='a' && B<='f')) b=B-'a'+10; return a<<4+b;

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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