写点什么

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

发布于: 4 小时前

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

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 参数,修改为自动计算数据长度的效果。十六进制转换为十进制,代码如下所示:

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()函数,声明如下所示:

int sprintf(char *str, const char *format, ...)
复制代码

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

sprintf(&data, "十进制12的十六进制是%X", 12); sprintf(&data, "十六进制0X12的十进制是%d", 0X12);
复制代码


发布于: 4 小时前阅读数: 2
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018.02.09 加入

【公众号】美男子玩编程

评论

发布
暂无评论
C语言:十进制、十六进制数据互换