簡體   English   中英

十六進制轉二進制程序 - Python

[英]Hexadecimal to Binary program - Python

我正在做復習試卷。 這不是我需要幫助的特定問題,但我不確定為什么在輸入某些數據時程序輸出不正確。

def Binary(Hex):
    Result = ''
    ErrorFound = False
    BinaryEquivalent = ''
    EmptyInput=""
    for ThisHexDigit in Hex:
        if ThisHexDigit in ['1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F']:
            if ThisHexDigit == '0': BinaryEquivalent = '0'
            elif ThisHexDigit == '1': BinaryEquivalent = '1'
            elif ThisHexDigit == '2': BinaryEquivalent = '2'
            elif ThisHexDigit == '3': BinaryEquivalent = '3'
            elif ThisHexDigit == '4': BinaryEquivalent = '4'
            elif ThisHexDigit == '5': BinaryEquivalent = '5'
            elif ThisHexDigit == '6': BinaryEquivalent = '6'
            elif ThisHexDigit == '7': BinaryEquivalent = '7'
            elif ThisHexDigit == '8': BinaryEquivalent = '8'
            elif ThisHexDigit == '9': BinaryEquivalent = '9'
            elif ThisHexDigit == 'A': BinaryEquivalent = '10'
            elif ThisHexDigit == 'B': BinaryEquivalent = '11'
            elif ThisHexDigit == 'C': BinaryEquivalent = '12'
            elif ThisHexDigit == 'D': BinaryEquivalent = '13'
            elif ThisHexDigit == 'E': BinaryEquivalent = '14'
            elif ThisHexDigit == 'F': BinaryEquivalent = '15'
            Result = Result + BinaryEquivalent
        elif ErrorFound == True:
            print('You have made a mistake')
        elif Hex==EmptyInput:
            print('Empty input, try again.')

    return Result

是的,我知道這是一段過於復雜的代碼,但它在試卷中,所以我必須使用它。 它是這樣的,除了所有的 BinaryEquivalent 字符串都是BinaryEquivalent = ''而不是里面有數字。

問題是當我在程序顯示時輸入兩個字符。 例如,輸入“BBB”將是 output 11,“BBBBBB”也是如此。

您應該將return語句放在for循環之外。

return語句在for循環內,因此只完成一次迭代,它應該是:

for ThisHexDigit in Hex:
    #code

return result

並不是:

for ThisHexDigit in Hex:
    #code
    return result

只有當您的十六進制數是單個十六進制數字時,您的解決方案才是好的。 如果你想轉換更長的數字,你將不得不做一些更正。

  1. Result可以是簡單的 int,從 0 開始
  2. 所有 BinaryEquivalent 都應該是整數,所以使用BinaryEquivalent = 0
  3. 在 for 循環中你必須增加你的結果,使用: Result = 16 * Result + BinaryEquivalent

暫無
暫無

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

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