Python基础练习 十进制转十六进制

192 阅读1分钟

Python基础练习 十进制转十六进制

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

问题描述

  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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在十六进制中是1E。

  给出一个非负整数,将它表示成十六进制的形式。

输入输出

  • 输入格式

  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647.

  • 输出格式

  输出这个整数的16进制表示.

  • 样例输入

  30

  • 样例输出

  IE

Python版本 代码如下

大Python的简洁之道。

n = int(input())
s = str(hex(n))
print(s[2:].upper())

同样,我们再次对比一下十六进制转化十进制的程序:详解链接

n = input()
print(int(n,16))   

C版本 代码如下

在之前的基础上,列举C语言各类进制之间的转化代码如下:

(1)十进制转十六进制

#include<stdio.h>
#include<string.h>

int main(){
    long n;  //注意n是long类型
    char a[999];
    
    scanf("%d", &n);
    for(int i=0; n!=0; i++){
        if(n%16==10)
            a[i]='A';
        else if(n%16==11)
            a[i] = 'B';
        else if(n%16==12)
            a[i] = 'C';
        else if(n%16==13)
            a[i] = 'D';
        else if(n%16==14)
            a[i] = 'E';
        else if(n%16==15)
            a[i] = 'F';
        else a[i] = (n%16)+'0';
        n=n/16;
    }
    
    for(int i=strlen(a)-1; i>=0; i--)
        printf("%c", a[i]);
    
    return 0;
}

(2)任意进制转十进制

#include<stdio.h>
int main(){
    int x, p;
    scanf("%d", &X);
    scanf("%d", &p);
    
    int y = 0;
    int pro = 1;
    while(x!=0){
        y += (x%10)*pro;
        x = x/10;
        pro *= p
    }
    printf("%d", y);
    return 0;
}

(3)十进制转任意进制

#include<stdio.h>
int main(){
    int x, p;
    scanf("%d", &X);
    scanf("%d", &p);
    
    int a[999];
    int con = 0;
    do{
        a[con++] = x%p;
        x = x/p;
    }while(x!=0)
    
    for(int i=con-1; i>=0; i--){
        printf("%d", a[i]);
    }
    return 0;
}

参考博客:C版本