簡體   English   中英

在python中將十進制轉換為十六進制

[英]Converting Decimal to Hexadecimal in python

  1. 我得到的答案是7D,而我應該得到7D0。 我實際上不知道如何解決它:
  2. 我的測試用例在開始時是31,答案是正確的1F,但是當我朝更高的數字前進時,我的代碼不起作用。
  3. 使用循環可能會更有效,但我現在不太適應循環
  4. 請幫忙 !!!

     def dec2hex(n): x1 =0 counter = 0 answer = "" if n<=0: answer =answer + "0" else: while (n >16): counter +=1 n = n /16 x = n if(x <16 ): x = int(n) break else: continue if ((nx) *16 <16 ): counter1 = 1 else: counter1 = counter -1 rem = (nx) * (16**(counter1)) if rem >16: while (n >16): rem = rem /16 x1 = rem if(x1 <16 ): x1 = int(rem) break else: continue if n < 10: answer =answer + str(int(x)) if (rem ==10 or x1 ==10): answer = answer + "A" if (rem ==11 or x1 ==11): answer = answer + "B" if (rem ==12 or x1 ==12): answer = answer + "C" if (rem ==13 or x1 ==13): answer = answer + "D" if (rem ==14 or x1 ==14): answer = answer + "E" if (rem ==15 or x1 ==15): answer = answer + "F" print(counter,rem,x1,n,counter,x) return answer 

    dec2hex(2000年)

我想提出這個問題的方法。 while循環用於循環主除法,而提示演算a for循環用於反轉最終答案字符串

while循環條件排除了輸入0的情況,因為除法余數將始終為零,並且循環將為無限。 在這種情況下,第一個if將把答案強制為0。

def dec2hex(hexnum):
hexstring = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
counter = 0
remainder = []
answer = ""
if hexnum > 0:
    while hexnum > 0:
        remainder.append(hexnum % 16)
        hexnum = hexnum // 16
        counter = counter + 1
    for reverse in remainder[::-1]:
        answer = answer + hexstring[reverse]
else:
    answer = "0"
return answer

打印(dec2hex(2000))

我能想到的最優雅的答案是格式化字符串文字,它將為您轉換值

3.6+(f弦)

>>> d = 2000
>>> print(f'{d:X}')
7D0

3.6之前的版本(字符串格式功能)

>>> d = 2000
>>> print('{:X}'.format(d))
7D0

https://docs.python.org/3/reference/lexical_analysis.html#f-strings

https://docs.python.org/3/library/string.html#formatspec

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM