C语言 十进制转十六进制

一般系统中想打印16进制的数据可以使用printf("%x",d);等去打印,但是打印出来的数据如果比较长的话可读性就比较差,因此博主编写了一个能够在每两个数据之间添加一个空格,让16进制的数据可以性更高。

char *intToHex(int num)
{
    
    
    static int i = 0;
    static char buffer[10];//根据自己需求改变数组的大小
    if (num < 16)            //结束递归添加的判断
    {
    
    
        if (num< 10)        //将当前数值转换成为字符并放入字符串
            buffer[i] = num + '0';
        else
            buffer[i] = num - 10 + 'A';
        buffer[i+1] = '\0'; //字符串结束标志
    }
    else
    {
    
    
        intToHex(num / 16);  //递归调用
        i++;                //字符串索引+1
        if(i%2 == 0){
    
    
        	buffer[i] = ' ';	//添加空格
        	i++;
        }
		num %= 16;           //取余
		if (num < 10)        //将当前数值转换成为字符并放入字符串
			buffer[i] = num + '0';
		else
			buffer[i] = num - 10 + 'A';
    }
    return buffer;//转换完的数组
}

猜你喜欢

转载自blog.csdn.net/weixin_43491568/article/details/103081622