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

美男子玩编程

共 907字,需浏览 2分钟

 ·

2021-09-05 18:11

点击上方蓝色字体,关注我们

最近写单片机数据转换用到了十进制、十六进制互换,将示例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);


往期推荐



点击阅读原文,更精彩~
浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报