十进制转十六进制
思路:先对高位求余,得出高位的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