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

举报
不脱发的程序猿 发表于 2021/09/01 00:56:42 2021/09/01
【摘要】 最近写单片机数据转换用到了十进制、十六进制互换,将示例Demo分享给各位朋友: 十进制转换为十六进制,代码如下所示: int DectoHex(int dec, unsigned char *hex, int length) { for(int i=length-1; i>=0; i--) { hex[i] = (de...

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

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


  
  1. int DectoHex(int dec, unsigned char *hex, int length)
  2. {
  3. for(int i=length-1; i>=0; i--)
  4. {
  5. hex[i] = (dec%256)&0xFF;
  6. dec /= 256;
  7. }
  8. return 0;
  9. }

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

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


  
  1. unsigned long HextoDec(const unsigned char *hex, int length)
  2. {
  3. unsigned long rslt = 0;
  4. for(int i=0; i<length; i++)
  5. {
  6. rslt += (unsigned long)(hex[i])<<(8*(length-1-i));
  7. }
  8. return rslt;
  9. }

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

int sprintf(char *str, const char *format, ...)
 

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


  
  1. sprintf(&data, "十进制12的十六进制是%X", 12);
  2. sprintf(&data, "十六进制0X12的十进制是%d", 0X12);

拓展学习:

1、C 库函数 - sprintf()

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

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

文章来源: handsome-man.blog.csdn.net,作者:不脱发的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:handsome-man.blog.csdn.net/article/details/120000137

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。