单片机中十进制转十六进制
在进行单片机编码过程中用到过的一个转换方法,在此记录一下,方便以后使用,只能是转成十六进制是 两个 字节的数字,即 可转的范围0<n<256
可修改 u8->u16,转换更高范围
u8 temp;
u8 tempHexstr[3];
void nToHexstr(u8 n, u8 * hexstr, u8 strlen)
{
u8 hexChar[16] = {'0', '1','2','3', '4','5','6', '7','8','9', 'A','B','C', 'D','E','F'};
u8 i;
u8 dis;
u32 nTemp = (int32_t) n;
for(i=1; i<=strlen; i++)
{
dis = nTemp & 0x0f;
hexstr[strlen-i] = hexChar[dis];
nTemp = nTemp >>4;
}
hexstr[strlen]='\0'; //使用strcat()函数,进行字符串拼接。需要结束符
}
printf("温度:%c \n",tempHexstr);
以上是在单片机中的代码,转换后为字符串格式
在VC++中代码如下(演示说明)
#include<stdio.h>
void nToHexstr(unsigned char n, unsigned char * hexstr, unsigned char strlen)
{
unsigned char hexChar[16] = {'0', '1','2','3', '4','5','6', '7','8','9', 'A','B','C', 'D','E','F'};
unsigned char i;
unsigned char dis;
unsigned long nTemp = (long) n;
for(i=1; i<=strlen; i++)
{
dis = nTemp & 0x0f;
hexstr[strlen-i] = hexChar[dis];
nTemp = nTemp >>4;
}
hexstr[strlen]='\0';
}
void main()
{
unsigned char temp=28;
unsigned char tempHexstr[3];
nToHexstr(temp, tempHexstr, 2);//n=28 hex:001C
printf("字符串:%s \n",tempHexstr);
}
28 -->1C
图片:
如有侵权,联系删除