# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 进制转换 # @param M int整型 给定整数 # @param N int整型 转换到的进制 # @return string字符串 # classSolution: defsolve(self , M: int, N: int) -> str: # write code here flag = True if M < 0: flag = False M = -M digit_map = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' } num = M ans = '' while num >= N: tmp = num % N # print(num,tmp) ans = str(tmp) + ans if tmp < 10else digit_map[tmp] + ans # print('ans', ans) num = num // N tmp = num % N ans = str(tmp)+ans if tmp < 10else digit_map[tmp] + ans while ans[0] == '0': ans = ans[1:] ifnot flag: ans = '-' + ans return ans
力扣转换16进制数
这个一个位运算的题目,需要对原码、反码、补码等知识了解比较清楚
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution { public: string toHex(int num){ if (num == 0){ return"0"; } string stringBuffer; for (int i = 7; i >=0; i--){ int val = (num >> (4*i)) & 0xf; // 当val为0时,不能为最左第一个字符,即string不能为空 if (val > 0 || stringBuffer.length() > 0){ char digit = val < 10 ? (char)('0'+val) : (char)('a'+val-10); stringBuffer.push_back(digit); } } return stringBuffer; } };