最近写单片机数据转换用到了十进制、十六进制互换,将示例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, ...)
只需要修改函数参数,就可以便捷实现各类型进制转换,例如实现十进制、十六进制数据互换,伪代码如下所示:
。。。。。。。。。。。。。。。。。
版权原因,完整文章,请参考如下: