首页 > 其他分享 >D_to_H

D_to_H

时间:2024-04-30 09:00:47浏览次数:15  
标签: 10 SeqStack 16 Manager num remainder

十进制转十六进制

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");  
    
}

标签:,10,SeqStack,16,Manager,num,remainder
From: https://www.cnblogs.com/waibibabu-/p/18167019

相关文章