首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言:十进制、十六进制数据互换

C语言:十进制、十六进制数据互换

作者头像
不脱发的程序猿
发布2021-09-07 16:33:49
发布2021-09-07 16:33:49
3.1K00
代码可运行
举报
运行总次数:0
代码可运行

最近写单片机数据转换用到了十进制、十六进制互换,将示例Demo分享给各位朋友:

十进制转换为十六进制,代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
int DectoHex(int dec, unsigned char *hex, int length) 
{ 
	for(int i=length-1; i>=0; i--) 
	{ 
		hex[i] = (dec%256)&0xFF; 
		dec /= 256; 
	} 
	
	return 0; 
} 

各位可以将手动规定的length参数,修改为自动计算数据长度的效果。

十六进制转换为十进制,代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
unsigned long HextoDec(const unsigned char *hex, int length) 
{ 
	unsigned long rslt = 0; 
	
	for(int i=0; i<length; i++) 
	{ 
		rslt += (unsigned long)(hex[i])<<(8*(length-1-i)); 
	} 
	
	return rslt; 
} 

除了使用以上方法,还可以使用:sprintf()函数,声明如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
int sprintf(char *str, const char *format, ...)

只需要修改函数参数,就可以便捷实现各类型进制转换,例如实现十进制、十六进制数据互换,伪代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
sprintf(&data, "十进制12的十六进制是%X", 12);

sprintf(&data, "十六进制0X12的十进制是%d", 0X12);

拓展学习:

1、C 库函数 - sprintf()

2、进制转换工具:https://tool.lu/hexconvert/

3、C语言:十六进制(HEX)和浮点类型(float、double)转换

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档