写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在
s = input() maping ={'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 = s[::-1] s = s[:-2] h = 1 ans = 0 for c in s: ans += int(maping[c]) * h h *= 16 print(ans)
import sys if __name__ == "__main__": for line in sys.stdin: a = line.split('\n') num_hex_str = a[0][2:] print(int(num_hex_str,16))题目已经限定了输入的数的范围 1~2^32-1,就算在32位机器上,依旧可以用一个4字节长整型数表示,所以直接用语言自带的字符串-数字转换函数即可
dic = {} dic['A']= '10' dic['B']= '11' dic['C']= '12' dic['D']= '13' dic['E']= '14' dic['F']= '15' for i in range(10): dic[str(i)] = str(i) while True: try: a = input() n = 0 for i in range(2,len(a)): n = n + int(dic[a[i]])* (16**(len(a)-i-1)) print(str(n)) except: break
bits = { '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 } # 大数乘法(不是负数情况下)(数组元素和乘数均以数值而非字符串表示) def bigNumMul(arr, num): # 空数组直接返回 if not arr: return arr # 记录进位的数 carry = 0 # 记录每一位乘法后临时结果 mul = 0 # 从低位到高位处理 arr = arr[::-1] for i in range(len(arr)): # 每一位乘上乘数再加上低位传来的进位数 mul = num * arr[i] + carry # 取个位数赋值给当前位 arr[i] = mul % 10 # 其余位数作为进位 carry = mul // 10 # 乘完之后若最高位前还要进位,则补上 while carry > 0: arr += [carry % 10] carry = carry // 10 # 换回正常顺序 arr = arr[::-1] # 去掉最前面的0 while len(arr) > 1 and arr[0] == 0: arr = arr[1:] # 返回结果数组 return arr def bigNumAdd(arr, num): if not arr: while num > 0: arr.append(num % 10) num = num // 10 return arr[::-1] arr = arr[::-1] arr[0] += num carry = arr[0] // 10 arr[0] = arr[0] % 10 for i in range(1, len(arr)): arr[i] += carry carry = arr[i] // 10 arr[i] = arr[i] % 10 while carry > 0: arr.append(carry % 10) carry = carry // 10 return arr[::-1] while 1: try: hex_lst = input()[2:] dec_lst = [0] # 低位到高位处理 for c in hex_lst: # 整个数组乘以16进行进位 dec_lst = bigNumMul(dec_lst, 16) # 数组最低位加上当前的个位数 dec_lst = bigNumAdd(dec_lst, bits[c]) res_str = ''.join([str(e) for e in dec_lst]) print(res_str) except Exception: break
while True: try: line = input().replace("0x", "") c_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} num = 0 line = list(line)[::-1] for i,d in enumerate(line): num += c_dict[d] * (16 ** i) print(num) except: break 或:print(int(input(),16))
shiliu = {'A':10,'B':11,'C':12,'D':13,'E':14,'F':15} while True: try: string16 = input().split('x')[1] strmk = 0;i = 0 for char in string16: if i<len(string16): strmk+=shiliu[char]*16**i # print(strmk) i = i+1 else: pass print(int(strmk)) except: break