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

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

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

拓展学习:


1、C 库函数 - sprintf()


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


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


相关文章
|
6天前
|
存储 C语言
C语言数据的输入举例
C语言数据的输入举例
20 1
|
6天前
|
机器学习/深度学习 编译器 C语言
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
30 0
|
1天前
|
存储 C语言
C语言进阶⑩(数据的存储)数据类型_介绍+存储_大小端(知识点+笔试题)(下)
C语言进阶⑩(数据的存储)数据类型_介绍+存储_大小端(知识点+笔试题)
9 0
|
1天前
|
存储 编译器 C语言
C语言进阶⑩(数据的存储)数据类型_介绍+存储_大小端(知识点+笔试题)(中)
C语言进阶⑩(数据的存储)数据类型_介绍+存储_大小端(知识点+笔试题)
8 0
|
6天前
|
C语言
每天一道C语言编程(2^k进制数)
每天一道C语言编程(2^k进制数)
6 0
|
6天前
|
存储 编译器 程序员
C语言:数据在内存中的存储
C语言:数据在内存中的存储
15 2
|
6天前
|
存储 编译器 C语言
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
|
6天前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
18 0
|
6天前
|
C语言
多组数据的输入方法(c语言实现)
多组数据的输入方法(c语言实现)
|
6天前
|
存储 编译器 程序员
【C语言】整形数据和浮点型数据在内存中的存储
【C语言】整形数据和浮点型数据在内存中的存储
17 0