D_to_H

十进制转十六进制

image

思路:先对高位求余,得出高位的16进制数,再除以16得到低位。循环往复知道为0。由于16进制有 A B C D E 所以求余后还需判断余数是否大于10,将余数转换为字符。


/*****************************************************************************

*                 函数名称:			 D_to_H
*                 函数功能:			实现10进制转16进制
*                 函数参数:
*                 @num		输入的非负十进制数
*                 @Manager	操作的栈
*                 返回结果:			NONE
*                 注意事项:			NONE
*                 函数作者:			c7355608bs@163.com
*                 创建日期:			2024/4/29
*                 修改历史:			2024/4
*                 函数版本:			1.0
*
*****************************************************************************/

void D_to_H(unsigned int num,SeqStack_t *Manager )
{
    //记录余数
    int  remainder = 0;
    //用 do-while 是考虑当输入为 0 
    do
    {
        remainder = num % 16;
        //判断 remainder 是否大于10,大于10要转成字符A B C D E

        if(remainder < 10)
        {
             SeqStack_Push(Manager,remainder + '0');

        }else
            SeqStack_Push(Manager,remainder + 'A' - 10);
   
        //计算下一位
        num = num / 16;

    } while (num);
    
    printf("0X"); 
    //循环输出
    while(!SeqStack_IsEmpty(Manager))
    {
            printf("%c",SeqStack_Pop(Manager));
    }
    printf("\n");  
    
}

posted @ 2024-04-30 08:53  歪币八卜  阅读(29)  评论(0)    收藏  举报