首页 > 试题广场 >

进制转换

[编程题]进制转换
  • 热度指数:993922 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的十六进制数,输出其对应的十进制表示。

\hspace{15pt}在本题中,十六进制数的格式为:\texttt{0x} 开头,后跟若干个十六进制数字(保证为 \texttt{0-9}\texttt{A-F} 中的一个)。其中,\texttt{A-F} 依次代表十进制中的 10 \sim 15

输入描述:
\hspace{15pt}在一行上输入一个十六进制数 s,代表待转换的十六进制数,格式见题干。保证 s 转化得到的十进制数 x 的范围为 1 \leqq x \lt 2^{31}


输出描述:
\hspace{15pt}在一行上输出一个整数,代表 s 对应的十进制数。
示例1

输入

0xFA93

输出

64147

说明

\hspace{15pt}回忆十六进制转化为十进制的方法:从右往左,将第 i 位乘以 {\color{orange}{16^i}},然后求和。

\hspace{15pt}在这个样例中,\texttt{0xFA93} 的第 0 位是 \texttt{3},第 1 位是 \texttt{9},第 2 位是 \texttt{A},第 3 位是 \texttt{F},因此 \texttt{0xFA93} = 3 \times {\color{orange}{16^0}} + 9 \times {\color{orange}{16^1}} + 10 \times {\color{orange}{16^2}} + 15 \times {\color{orange}{16^3}} = 64147
s=input().strip()
print(int(s,16))
发表于 2025-11-21 15:51:56 回复(0)
s = input()
t = list(s.removeprefix('0x')) print(t)
n = len(t)
q = 0 i = 0 while i < n: if t[i] == 'A':
        t[i] = 10  if t[i] == 'B':
        t[i] = 11  if t[i] == 'C':
        t[i] = 12  if t[i] == 'D':
        t[i] = 13  if t[i] == 'E':
        t[i] = 14  if t[i] == 'F':
        t[i] = 15  q = q + 16**(n - i -1)*int(t[i])
	
i = i + 1 print(q)
我用python写的,看答案把我看乐了
发表于 2025-09-06 00:23:34 回复(0)
sum = 0
s.reverse()
for i in range(len(s)):
    try:
        p = int(s[i])
    except:
        if s[i] == 'A':
            p = 10
        if s[i] == 'B':
            p = 11
        if s[i] == 'C':
            p = 12
        if s[i] == 'D':
            p = 13
        if s[i] == 'E':
            p = 14
        if s[i] == 'F':
            p = 15
    finally:
        sum = sum +  p * 16 ** i

print(sum)
       
           

发表于 2025-08-03 17:30:46 回复(0)
print(int(input(), 16))

发表于 2025-07-10 16:33:08 回复(0)
print(eval(input()))
发表于 2025-07-08 13:51:35 回复(0)
a = input()
b = a[::-1]
c = 0
for i in range(len(b)-2):
    if b[i] == 'A':
        c += 10*16**i
    elif b[i] == 'B':
        c += 11*16**i
    elif b[i] == 'C':
        c += 12*16**i
    elif b[i] == 'D':
        c += 13*16**i
    elif b[i] == 'E':
        c += 14*16**i
    elif b[i] == 'F':
        c += 15*16**i
    else:
        c += int(b[i])*16**i
print(c)
菜鸡一个
发表于 2025-07-01 17:45:01 回复(1)
s = input()
count = 0
for i in range(2,len(s)):
    num = 0
    if s[i] =='A':
        num = 10
    elif s[i] == 'B':
        num = 11
    elif s[i] == 'C':
        num = 12
    elif s[i] == 'D':
        num = 13
    elif s[i] == 'E':
        num = 14
    elif s[i] == 'F':
        num = 15
    else:
        num = int(s[i])
    count += 16**(len(s)-i-1)*num
print(count)
发表于 2025-05-24 11:53:32 回复(0)
吐了,在自己的IDE上对的,在这上面已提交就错了
for line in sys.stdin:
    a = line.split()
    # a = a.lstrip("0x")
    a = a[2:]
    a = a[::-1]
    res = 0
    tempdict = {"A":10,"B":11,"C":12,"D":13,"E":14,"F":15}
    for i in range(len(a)):
        if a[i] in tempdict:
            num = tempdict[a[i]]
        else:
            num = int(a[i])
        res = res + num * (16**i)
    print(res)


发表于 2025-05-19 17:08:26 回复(1)
ls1 = input()[2:]
ls2 = ls1[::-1]
dict1={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
num=0
for i in range(len(ls2)):
    num=num+dict1[ls2[i]]*16**i
print(num)
发表于 2025-05-14 10:46:53 回复(0)
print(int(input(), 16))
发表于 2025-05-09 13:52:07 回复(0)
dict={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
a=input()[2:]
f=0
b=0
while b in range(len(a)):
    f+=dict[a[b]]*16**(len(a)-b-1)
    b+=1
print(f)
发表于 2025-04-20 15:23:17 回复(0)
import sys

content_in = sys.stdin.readline().strip()

length = len(content_in) -2
nums = 0

for x in range(length):

    if content_in[x + 2].isalpha():

        if content_in[x + 2] == "A":
            num = 10
        elif content_in[x + 2] == "B":
            num = 11
        elif content_in[x + 2] == "C":
            num = 12
        elif content_in[x + 2] == "D":
            num = 13
        elif content_in[x + 2] == "E":
            num = 14
        else:
            num = 15
    else:
        num = int(content_in[x + 2])
   
    nums = nums + num * (16**(length -1 - x ))
print(nums)
发表于 2025-03-27 16:32:22 回复(0)

感觉不是出题人想要的方法,但可以解决问题:

s = input()
print(int(s, 16))
发表于 2025-03-22 17:25:38 回复(1)
dic = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
s = input()[2:]
a = len(s)-1
result = 0
for i in s:
    result += dic[i]*16**a
    a -= 1
print(result)
发表于 2025-03-10 12:11:14 回复(0)
import sys

s = input()
l=list(s)
count = len(s)
sum = 0

for i in range(2,count):
    if l[count-i+1] == 'A':
        sum+= 10*16**(i-2)
    elif l[count-i+1] == 'B':
        sum+= 11*16**(i-2)
    elif l[count-i+1] == 'C':
        sum+= 12*16**(i-2)
    elif l[count-i+1] == 'D':
        sum+= 13*16**(i-2)
    elif l[count-i+1] == 'E':
        sum+= 14*16**(i-2)
    elif l[count-i+1] == 'F':
        sum+= 15*16**(i-2)
    else:
        sum+= int(l[count-i+1])*16**(i-2)
print (sum)
发表于 2025-02-18 11:08:02 回复(0)
a_hex =input()
a_int = int(a_hex, 0)
print(a_int)
发表于 2025-02-14 19:17:43 回复(0)
s = input()
i = int(s,16)
print(i)
发表于 2025-02-14 09:27:23 回复(0)
# 方式一:进制转换——二进制bin,八进制oct,十进制int,十六进制hex。
# 例如,二进制转十进制,s = input(); output = int(s, 2)
# 方式二:基本原理实现
while True:
    try:
        str0 = input()[2:].upper()
        dic = {'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}
        n = len(str0)
        sum = 0
        for i in str0:
            if i in dic:
                sum += dic[i] * 16 ** (n-1)
                n -= 1
            else:
                sum += int(i) * 16 ** (n-1)
                n -= 1
        print(sum)
        break

    except Exception as e:
        print(f'{e}')
        break

发表于 2024-12-31 21:51:06 回复(0)