首页 > 其他分享 >十进制转十六进制

十进制转十六进制

时间:2024-04-25 13:44:06浏览次数:19  
标签:十六进制 出栈 16 num 十进制 循环

设计一个进制转换程序,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。

思路:
进栈->用循环将十进制数对16取模,将结果存进栈中,然后定义无符号整型变量,将该十进制数除以16得到的结果(int类型自动取整,舍弃小数位)赋值给该变量,重复上述循环,注意跳出循环的条件为得到新的变量对16取模的结果为他本身。为了方便出栈,在循环体内要定义一个计数器,记录进栈的次数
出栈->用循环将上述步骤进栈的数据出栈,循环的次数为进栈时所记录的计数器,注意当所出栈时数据大于10的情况要用字符输出的形式转换为字母

/******************************************************
 *
 *  name      : DecToHex
 *	function  : 创建顺序表并对顺序栈进行初始化
 *  argument
 *              @Manager :顺序栈的地址
 *
 *  retval    : void
 *  author    : Dazz
 *  date      : 2024/4/25
 *  note      : None
 *
 * *******************************************************/
void DecToHex(SeqStack_t *Manager, unsigned int num)
{
    // 记录十进制数转换为十六进制数的位数,即需要进几次栈
    int count = 0;

    // 用循环把传进来的函数用短除法存进栈中
    while (1)
    {

        // 把传进来的函数用短除法存进栈中(该函数已判断栈是否位满)
        SeqStack_Push(Manager, num % 16);
        count++;

        // 退出循环条件
        if (num == num % 16)
            break;

        num = num / 16;
    }
    
    //输入十六进制前导符
    printf("0x");
    
    //用循环对栈进行出栈,并输出出栈的数据
    for (int temp; count > 0; count--)
    {
        // 对出栈的数据进行备份(该函数已判断栈是否为空)
        temp = SeqStack_Pop(Manager);

        if (temp < 10)    //数据小于十的情况
            printf("%d", temp);
        else    //数据大于十的情况,数据对数据进行转换
            printf("%c", temp + 55);

        if (1 == count)
            printf("\n");
    }
}


标签:十六进制,出栈,16,num,十进制,循环
From: https://www.cnblogs.com/Dazz24/p/18157532

相关文章

  • leedcode-数字转换为十六进制数
    自己写的,先整数转二进制,再切片二进制转16进制classSolution:deftoHex(self,num:int)->str:#处理特殊情况:当num为0时,直接返回'0'ifnum==0:return'0'#定义十六进制字母的映射关系my_dict={10:......
  • 十六进制字符串每隔32个字母换行显示
     //每32个字节换行打印publicstaticvoidformatPrint(StringhexStr){intno=0;intlength=hexStr.length();for(inti=0;i<length;i++){if((i+1)%32==0){Strings=twoSpaceTwo(hexStr.substring(i-31,i+1));System.out.println(......
  • 【Azure Power BI】在Power BI中获取十进制随机数后,转换十六进制作为颜色值示例
    问题描述在使用PowerBIDesktop做报表,用到了其中一个图标组件(CardBrowser),可以做出比较漂亮的图片和带颜色的卡片效果:但是,在自己的数据源中,并没有颜色值。所以颜色值为0-255的十进制转换为00-FF的十六进制数据,想到了生成随机数,然后转换为颜色值。数据源格式示例:Title Coun......
  • 进制之间的转换之“十六进制 转 十进制 转 二进制 方案”
    1.十六进制转十进制十六进制数为:0X1A6F根据16进制数要转十进制得到公式:F*160+6*161+A*162 +1*163 十六机制数:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F也就是常数:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15转为常数:15 *160 +6*161 +10*162 +1*163 计......
  • 如何把一个十进制数转化为一个二进制数
    起因Miqa在改愤怒的小鸟,WA了两个点,尝试画图未遂,于是开调,但是想直观的看到二进制数,所以有了这个工具。#include<bits/stdc++.h>usingnamespacestd;inlinevoidtwice(longlongx){ stack<int>num; while(x!=0) { if(x&1)num.push(1); elsenum.push(0); x>>=1; ......
  • PTA数据结构第四章7-2 变身(八进制转成十进制)
    分数20作者 陈晓梅单位 广东外语外贸大学题目给出一个由18位八进制数字组成的序列,要求每六位转成一个十进制数并输出。输入格式:18位八进制数字组成的序列。输出格式:输出转换后的三个十进制数,以空格分隔,行末不能有空格。输入样例:000023452230567134输出样例:......
  • 二进制、十进制与十六进制相互转化
    二进制数(满2进1):表示方式01010110十进制数(满10进1):表示方式为常规数字表示十六进制(满16进1):数字0-15分别对应0123456789ABCDEF二进制数转十进制:1010 转换为10进制(从左往右):1*2^3+0*2^2+1*2^1+0*2^0=10十进制转二进制:10短除法除以2从下到上取余数1010二进制转换为十六进制:101......
  • 蓝桥杯 试题 基础练习 十进制转十六进制 C++
    问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制......
  • 基于EP4CE6F17C8的FPGA双数码管六十进制秒计数实例
    一、电路模块本例的电路模块与“基于EP4CE6F17C8的FPGA数码管动态显示实例”中的完全一样,此处就不再给出了。二、实验代码本例实现2个数码管循环显示00~59,显示间隔为1秒,代码使用Verilog编写,采用例化的形式,共有三个文件。先编写数码管实现显示字形解码的程序,模块名称为seg_deco......
  • 二进制与十进制转换
    目录1、 正整数转成二进制2、 负整数转换成二进制3、 小数转换为二进制的方法4、 整数二进制转换为十进制5、若二进制补足位数后首位为1时,就需要先取反再换算6、将有小数的二进制转换为十进制时转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二......