首页 > 其他分享 >进制转换

进制转换

时间:2024-04-25 14:57:09浏览次数:28  
标签:转换 进制 decimal int top stack return Stack

/****************************************************************
 * name;Decimal To Hexdecimal
 * function:进制转换
 * parameter;
 * ReValue;
 * author;小北blog
 * attention;
 * date;2024.04.25
 * history;
 * version;
 * Copyright(c) 2024 huahuadebaby99@163.com All rights Reserved
 *****************************************************************/

/*进制转换函数接口 非负数十进制转成十六进制*/

#define Size 100
// 定义栈结构体
typedef struct
{
    int data[Size];
    int top;
} Stack;

// 初始化栈
void init_Stack(Stack *stack)
{
    int top = -1;
}
// 判断栈空间是否为空
bool IsEmpty(Stack *stack)
{
    return stack->top == -1;
}
// 判断栈空间是否已满
bool IsFull(Stack *stack) // 传入的是栈结构体
{
    return stack->top == Size - 1; // top的值为-1开始
}
// 入栈
void Push(Stack *stack, int value)
{
    if (!IsFull(stack)) // 不为空的情况下
    {
        stack->data[++stack->top] = value; // 将value的值放到栈空间data里面
    }
}

// 出栈
int Pop(Stack *stack)
{
    if (!IsEmpty(stack))
    {
        return stack->data[stack->top--];
    }
    return -1; // 返回-1表示栈为空
}
// 十进制Dec转换到十六进制Hex,创建函数,输入十进制
int DectoHex(int decimal)
{
    // 调用stack结构体
    Stack stack;
    // 调用已初始化栈结构体
    init_Stack(&stack);
    // 记录存放先进入栈空间的值
    int recodes;
    while (decimal != '0') // 循环找到16进制尾数
    {
        recodes = decimal % 16; // 取模,当decimal循环n次后小于16时栈顶的值为16进制的尾数
        Push(&stack, recodes);  // 入栈
        decimal = decimal / 16; // 更新十进制的值
    }
    while (!IsEmpty(&stack)) // 如果栈结构体出栈完,为空
    {
        // 出栈操作
        int inten = Pop(&stack);
        if (inten < 10)
        {
            printf("%d", inten);
        }
        else
        {
            printf("%c", 'A' + inten - 10);
        }
    }
}
int main()
{
    int Dec;
    printf("输入一个非负整数!!!");
    scanf("%d", &Dec);
    if (Dec < 16)
    {
        printf("输入有误,请输入有效的值!!!");
        return -1;
    }
    DectoHex(Dec);
    return 0;
}

标签:转换,进制,decimal,int,top,stack,return,Stack
From: https://www.cnblogs.com/ikunkunkun/p/18157699

相关文章

  • 十进制转十六进制
    设计一个进制转换程序,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。思路:进栈->用循环将十进制数对16取模,将结果存进栈中,然后定义无符号整型变量,将该十进制数除以16得到的结果(int类型自动取整,舍弃小......
  • WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来
    本文将告诉大家如何在WPF或者其他Win32应用里面,在收到鼠标消息时,通过GetMessageExtraInfo方法获取当前收到的鼠标消息是否由触摸消息提升而来大家都知道,在不开启WM_Pointer的情况下,无论是走WM_Touch或者是RealTimeStylus等方式,默认下触摸都会提升为鼠标消息从而更好......
  • 文本语音互相转换系统设计
    title:文本语音互相转换系统设计date:2024/4/2421:26:15updated:2024/4/2421:26:15tags:需求分析模块化设计性能优化系统安全智能化跨平台区块链第一部分:导论第一章:背景与意义文本语音互相转换系统的定义与作用文本语音互相转换系统是一种能够将文本信息......
  • 解决 java 实体中用 LocalDateTime 在转换时候报错 Error attempting to get column
    java中的实体类用到了LocalDateTime类型。在转换时候报错Errorattemptingtogetcolumn‘XXX’fromresultset.Cause:java.sql.解决方法最为简单。是因为com.alibaba的版本问题。切换版本号到1.1.22即可消除问题<dependency><groupId>com.alibaba</gro......
  • String.valueOf和强制类型转换(String)的区别
    String.valueOf和强制类型转换(String)在Java中都可以用来将其他类型的数据转换为字符串,但它们之间有一些重要的区别。空值处理:String.valueOf:当处理的对象为null时,String.valueOf会返回字符串"null",而不会抛出异常。(String):强制类型转换在面对null值时,会抛出NullPointerExc......
  • python中时间转换,获取上一月上一周,本月,本周
    defpaserTime(timestamp):t=time.time()f=time.localtime(timestamp/1000)print(t)#原始时间数据#print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳#nowTime=lambda:i......
  • python将字典转换为对象(type的高级用法)
    创建对象使用type()函数还可以动态创建对象。在Python中,对象本质上也是一种类型,因此可以使用type()函数来创建对象。例如:obj=type('MyObject',(),{'attr':'value'})()等价于classMyObject:attr='value'obj=MyObject()创建类使用type()函数还可以......
  • JavaImprove--Lesson10--IO流-字符流,缓冲流,转换流,打印流,数据流
    一.IO流-字符流上期在字节流的学习中,了解到字节流写字符操作表现很不好,随时面临乱码的情况,一下写完全部数据的,内存可能不足,所以对于文本操作还需要专业的操作 而字符流就非常适合操作文本字符FileWirte文件字符输入流作用:以内存为基准,可以把文件的数据以字符的形式输入到......
  • 【实用技巧】JSON格式转换方式
    1 前言对接开发中,常遇到的就是报文转换。比如从淘宝或者京东拉取订单,亦或是各个公司内部的WMS、OMS等交互,都涉及到格式转换。而大多的格式基本上都是JSON格式,当然也有一些老的SAP交互用的是XML格式的,还有一小部分webService接口也是用的XML格式。那我们这节就看看JSON......
  • leedcode-数字转换为十六进制数
    自己写的,先整数转二进制,再切片二进制转16进制classSolution:deftoHex(self,num:int)->str:#处理特殊情况:当num为0时,直接返回'0'ifnum==0:return'0'#定义十六进制字母的映射关系my_dict={10:......