首页 > 试题广场 >

进制转换

[编程题]进制转换
  • 热度指数:874586 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在

输入描述:

输入一个十六进制的数值字符串。



输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入

0xAA

输出

170

#include <iostream>
using namespace std;

int main()
{
    int a;
    while(cin>>hex>>a){
    cout<<a<<endl;
    }
}
发表于 2016-03-24 12:36:23 回复(119)
#include<stdio.h>
#include<string>
#include<iostream>
#include<set>
#include<math.h>
using namespace std;
//定义一个sum,每一位等于temp*16^(str.length()-i)

int main(){
    
    string strs;
    while(getline(cin,strs)){
    int sum=0;
    int temp=0;
    for(int i=strs.length()-1;i>0;i--){
        if(strs[i]=='x') break;
        if(strs[i]>='A'&&strs[i]<='J'){
           temp = strs[i]-55;
           temp = temp*pow(16,strs.length()-i-1);
        }
        else{
            temp = strs[i]-48;
            temp = temp*pow(16,strs.length()-i-1);
        }
        sum = sum+temp;
    }
cout<<sum<<endl;
    }
}

发表于 2022-02-23 15:11:44 回复(0)
比较蠢的方法,嘿嘿
while True:
    try:
        count = 0
        dit = {"A":10,"B":11,"C":12,"D":13,"E":14,"F":15}
        a = input()[2:][::-1]
        l = len(a)
        aList = list(a)
        for i in range(l):
            if aList[i].isalpha():
                x = dit[aList[i]]
            else:
                x = aList[i]
            count += int(x) * 16 ** i
        print(count)
    except:
        break
发表于 2021-11-05 16:12:23 回复(0)
package main

import (
    "fmt"
    "os"
    "bufio"
    "strconv"
)

func main(){
    input := bufio.NewScanner(os.Stdin)
    for input.Scan(){
        v, _ := strconv.ParseInt(input.Text(), 0, 64)
        fmt.Println(v)
    }
}

发表于 2021-10-20 18:14:23 回复(0)
#include<iostream>
using namespace std;
//十进制 dec
//十六进制:hex
//八进制:oct
int main()
{
    int a;
    while(cin>>hex>>a)   //读入六进制
    {
        cout<<a;
        cout<<endl;
    }
    return 0;
}

发表于 2021-08-18 15:36:28 回复(1)
想到稍微省事点的写法,把16进制直接写进字符串str,不过一开始sum没写等于0就一直出错,怎么回事啊?不是定义变量以后自动初始化为0吗?
#include<iostream>
#include<cmath>
using namespace std;

int main(){
    string s,str="0123456789ABCDEF";
    while(getline(cin,s)){
        int k=1, sum=0,pos;
        for(int i=s.size()-1;i>1;i--){
            pos=str.find(s[i]);
//             sum+=(pos*pow(16.0,k));
//             k++;
            sum+=(pos*k);
            k*=16;
        }
      cout<<sum<<endl;
    }
}


发表于 2021-02-25 17:48:30 回复(0)

啊这,,这不是送分的吗??

#include <stdio.h>

int main()
{
    int x;
    while (scanf("%x", &x) != EOF) printf("%d\n", x);
    return 0;
}
发表于 2021-02-24 18:53:13 回复(0)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll XToDec(string s,ll x) {  //将给定的x进制字符串s转换成10进制
    ll ans = 0;
    for(ll i = 0; i < s.length(); i++) {
        ans = ans*x + (isdigit(s[i]) ? s[i]-'0' : s[i]-'A'+10);
    }
    return ans;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    string s;
    while(cin >> s) {
        s = s.substr(2,s.length()-2);
        cout << XToDec(s,16) << endl;
    }
    return 0;
}
编辑于 2020-08-26 09:01:38 回复(0)
除了调库,啥也不会
import sys
lines = sys.stdin.readlines()
for line in lines:
    print(int(line.strip(), 16))


发表于 2020-08-24 18:57:31 回复(0)
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String line = scanner.nextLine();
            Integer integer = Integer.decode(line);
            System.out.println(integer);
        }
    }

// 方法2,使用ParseInt处理 
public static void parseIntRadix16() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String line = scanner.nextLine();
            line = line.replaceAll("0x", "").replaceAll("0X", "");
            Integer integer = Integer.parseInt(line, 16);
            System.out.println(integer);
        }
    }

发表于 2020-08-08 12:33:35 回复(0)
import sys
'''
n进制转为10进制:int(ss,n)
第一个参数ss是字符串,第二个参数n是说明,表示进制
例如int('0xA',16),表示将16进制的'0xA'转化为10进制
10进制转16进制:hex()
10进制转2进制:bin()
10进制转8进制:oct()
'''
while True:
    try:
        string_hex = sys.stdin.readline()
        print(int(string_hex, 16))
    except:
发表于 2020-04-12 11:32:09 回复(0)
public class hex_conversion {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            System.out.println(solution(scanner.nextLine()));
        }
    }

    public static int solution(String input) {
        int result = 0;
        if (input == null || input.length() == 0 || (input.charAt(0) != '0' && input.charAt(1) != 'x')) {
            return result;
        }
        for (int i = input.length() - 1, mul = 1; i > 1; i--, mul *= 16) {
            char c = input.charAt(i);
            if (c <= 'F' && c >= 'A') {
                result += (input.charAt(i) - 'A' + 10) * mul;
            } else {
                result += (input.charAt(i) - '0') * mul;
            }
        }
        return result;
    }
}

发表于 2020-04-08 17:22:53 回复(0)
如果p进制数x为a1a2...an,则十进制为y=a1*p的n-1次幂+a2*p的n-2次幂+an
#include<iostream>
(720)#include<string.h>
#include<math.h> 
using namespace std;
int main(){
	char s[1000];
	while(gets(s)){
		int m=0,sum=0;
		int len=strlen(s);
		for(int i=len-1;i>=0;i--){
			if(s[i]>='0'&&s[i]<='9')
			sum=sum+(s[i]-'0')*pow(16,m);
			else if(s[i]>='A'&&s[i]<='F')
			sum=sum+(s[i]-'A'+10)*pow(16,m);
			else if(s[i]>='a'&& s[i]<='f')
			sum=sum+(s[i]-'a'+10)*pow(16,m);
			m++;
	  	}
	  	cout<<sum<<endl;
	}
} 



发表于 2020-03-30 10:30:12 回复(0)
public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()) {
			String string = scanner.nextLine().substring(2);
			int result=Integer.parseInt(string, 16);
			System.out.println(result);
		}
		
	}

发表于 2020-03-25 13:02:23 回复(0)
//详细的解题思路请点击博客链接,链接在代码下边
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            //步骤一
            Map<Character,Integer> map=new HashMap<>();
            String s=sc.nextLine();
            map.put('0',0);
            map.put('1',1);
            map.put('2',2);
            map.put('3',3);
            map.put('4',4);
            map.put('5',5);
            map.put('6',6);
            map.put('7',7);
            map.put('8',8);
            map.put('9',9);
            map.put('A',10);
            map.put('B',11);
            map.put('C',12);
            map.put('D',13);
            map.put('E',14);
            map.put('F',15);
            int number=0;
            int power=s.length()-3;
            //步骤二
            for(int i=2;i<s.length();i++){
                char c=s.charAt(i);
                if(map.containsKey(c)){
                    int num=map.get(c);
                    number+= (int) (num*Math.pow(16,power));
                    power--;
                }
            }
            System.out.println(number);
        }
    }
}
————————————————
版权声明:本文为CSDN博主「峰回路转」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44840148/article/details/104866530

发表于 2020-03-14 21:00:54 回复(0)
python 代码:
while True:
    try:
        a = input()
        print(eval(a))
    except:
        break

发表于 2020-02-05 20:42:10 回复(0)
//同不知道考察什么,这个进制转化蛮简单的,就是注意一下switch不要把break忘记了
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
    char a[20],b[20];
    while(cin>>a){
        int len=strlen(a),total=0;
        for(int i=len-1;i>1;i--)
            b[len-i-1]=a[i];
        for(int i=0;i<len-2;i++)
            switch(b[i]){
                case '0': total+=0*pow(16,i);break;
                case '1': total+=1*pow(16,i);break;
                case '2': total+=2*pow(16,i);break;
                case '3': total+=3*pow(16,i);break;
                case '4': total+=4*pow(16,i);break;
                case '5': total+=5*pow(16,i);break;
                case '6': total+=6*pow(16,i);break;
                case '7': total+=7*pow(16,i);break;
                case '8': total+=8*pow(16,i);break;
                case '9': total+=9*pow(16,i);break;
                case 'A': total+=10*pow(16,i);break;
                case 'B': total+=11*pow(16,i);break;
                case 'C': total+=12*pow(16,i);break;
                case 'D': total+=13*pow(16,i);break;
                case 'E': total+=14*pow(16,i);break;
                case 'F': total+=15*pow(16,i);break;
            }
        cout<<total<<endl;
    }
    return 0;
}

发表于 2020-01-07 09:46:37 回复(0)
没有用其他的函数,比较巧的单纯用数组做出来的,这种思路你们可以借鉴下😂
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
	int arr[200];
	arr['0'] = 0;
	arr['1'] = 1;
	arr['2'] = 2;
	arr['3'] = 3;
	arr['4'] = 4;
	arr['5'] = 5;
	arr['6'] = 6;
	arr['7'] = 7;
	arr['8'] = 8;
	arr['9'] = 9;
	arr['A'] = 10;
	arr['B'] = 11;
	arr['C'] = 12;
	arr['D'] = 13;
	arr['E'] = 14;
	arr['F'] = 15;
	string ss;
	static int sum = 0;
	while (getline(cin, ss)) {
		sum = 0;
		for (int i = ss.size() - 1,j = 0; i >= 2; i--,j++) {
			sum += arr[ss[i]] * pow(16, j);
		}
		cout << sum << endl;
	}
	return 0;
}

发表于 2019-09-29 22:10:36 回复(0)
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string s;
    while (getline(cin, s)){
       char* end;
       int i = static_cast<int>(strtol(s.c_str(),&end,16));
       cout<<i<<endl; 
    }
    return 0;
}

发表于 2019-09-02 09:53:56 回复(0)
import java.util.*;

public class Main {

    /**
     * 字符转10进制整数
     * @param c 16进制中的字符
     * @return 16进制转换十进制后的整数值
     */
    private static int char2Int(char c) {
        if (c >= '0' && c <= '9') {
            return c - '0';
        } else {
            return (c - 'A') + 10;
        }
    }

    /**
     * 
     * @param hexStr 16进制转10进制
     * @return 返回十进制整数
     */
    private static long hex2bin(String hexStr) {
        long res = 0;
        for(int i = 0; i < hexStr.length(); i++) {
            res *= 16;
            res += char2Int(hexStr.charAt(i));
        }
        return res;
    }


    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String line = in.nextLine();
            long res = hex2bin(line.substring(2));
            System.out.println(res);
        }
    }
}

发表于 2019-09-01 00:12:32 回复(0)

问题信息

难度:
1892条回答 160437浏览

热门推荐

通过挑战的用户

查看代码