當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Binary轉Hexadecimal用法及代碼示例


給定一個二進製數,任務是編寫一個 Python 程序,將給定的二進製數轉換為等效的十六進製數。即將基值為 2 的數字轉換為基值 16。在十六進製表示中,我們使用 16 個值來表示一個數字。數字 0-9 由數字 0-9 表示,而 10-15 由 A - F 中的字符表示。

例:

Input: 1111
Output: F

Input:110101
Output: 35

Input: 100001111
Output: 10F

方法一:自定義代碼將二進製轉十六進製

第一步:輸入二進製數。

Input:111101111011

第 2 步:將二進製數分成四組,從右開始。

111101111011 = (1111)(0111)(1011)

步驟 3:將一組 4 位二進製數轉換為一位十六進製數。

(1111)(0111)(1011) = F7B

以下是上述方法的 Python 實現:

Python3


# Python code to convert binary number
# into hexadecimal number
  
# function to convert
# binary to hexadecimal
  
def binToHexa(n):
    bnum = int(n)
    temp = 0
    mul = 1
      
    # counter to check group of 4
    count = 1
      
    # char array to store hexadecimal number
    hexaDeciNum = ['0'] * 100
      
    # counter for hexadecimal number array
    i = 0
    while bnum != 0:
        rem = bnum % 10
        temp = temp + (rem*mul)
          
        # check if group of 4 completed
        if count % 4 == 0:
            
            # check if temp < 10
            if temp < 10:
                hexaDeciNum[i] = chr(temp+48)
            else:
                hexaDeciNum[i] = chr(temp+55)
            mul = 1
            temp = 0
            count = 1
            i = i+1
              
        # group of 4 is not completed
        else:
            mul = mul*2
            count = count+1
        bnum = int(bnum/10)
          
    # check if at end the group of 4 is not
    # completed
    if count != 1:
        hexaDeciNum[i] = chr(temp+48)
          
    # check at end the group of 4 is completed
    if count == 1:
        i = i-1
          
    # printing hexadecimal number
    # array in reverse order
    print("\n Hexadecimal equivalent of {}:  ".format(n), end="")
    while i >= 0:
        print(end=hexaDeciNum[i])
        i = i-1
  
# Driver code
if __name__ == '__main__':
    binToHexa('1111')
    binToHexa('110101')
    binToHexa('100001111')
    binToHexa('111101111011')

輸出:

Hexadecimal equivalent of 1111: F
Hexadecimal equivalent of 110101: 35
Hexadecimal equivalent of 100001111: 10F
Hexadecimal equivalent of 111101111011: F7B

方法二:先將二進製轉十進製,再將十進製轉十六進製

第一步:輸入二進製數。

Input:111101111011 = (111101111011)2

第二步:將二進製數轉換為十進製數。

(111101111011)2 = (3963)10

第三步:將上麵的十進製數轉換為十六進製數。

(3963)10 = (F7B)16

下麵是 Python 的實現 上述方法:

Python3


# Python program to convert binary number
# into hexadecimal number
  
# Function calculates the decimal equivalent
# to given binary number
def binaryToDecimal(binary):
  
    binary1 = int(binary)
    decimal, i, n = 0, 0, 0
      
    while(binary1 != 0):
        dec = binary1 % 10
        decimal = decimal + dec * pow(2, i)
        binary1 = binary1//10
        i += 1
    return(decimal)
  
# function to convert
# decimal to hexadecimal
def decToHexa(n):
  
    # char array to store
    # hexadecimal number
    hexaDeciNum = ['0'] * 100
  
    # counter for hexadecimal
    # number array
    i = 0
    while(n != 0):
  
        # temporary variable
        # to store remainder
        temp = 0
  
        # storing remainder
        # in temp variable.
        temp = n % 16
  
        # check if temp < 10
        if(temp < 10):
            hexaDeciNum[i] = chr(temp + 48)
            i = i + 1
        else:
            hexaDeciNum[i] = chr(temp + 55)
            i = i + 1
        n = int(n / 16)
  
    # printing hexadecimal number
    # array in reverse order
    j = i - 1
    while(j >= 0):
        print((hexaDeciNum[j]), end="")
        j = j - 1
    print()
  
# function to convert binary to
# hexadecimal
def binToHexa(n):
    decimal = binaryToDecimal(n)
    print("Hexadecimal equivalent of {}:".format(n))
    decToHexa(decimal)
  
# Driver code
if __name__ == '__main__':
    binToHexa('1111')
    binToHexa('110101')
    binToHexa('100001111')
    binToHexa('111101111011')

輸出:

Hexadecimal equivalent of 1111:
F
Hexadecimal equivalent of 110101:
35
Hexadecimal equivalent of 100001111:
10F
Hexadecimal equivalent of 111101111011:
F7B

方法三:使用預定義函數

示例 1:使用 int() 和 hex()

我們使用 int() 和 hex() 將二進製數轉換為其等效的十六進製數。下麵是使用 int() 和 hex() 的 Python 實現。

Python3


# Python code to convert from Binary
# to Hexadecimal using int() and hex()
def binToHexa(n):
    
    # convert binary to int
    num = int(n, 2)
      
    # convert int to hexadecimal
    hex_num = hex(num)
    return(hex_num)
  
# Driver code
if __name__ == '__main__':
    print(binToHexa('1111'))
    print(binToHexa('110101'))
    print(binToHexa('100001111'))
    print(binToHexa('111101111011'))

輸出:

0xf
0x35
0x10f
0xf7b

示例 2:使用 int() 和 format()

我們使用 int() 和 format() 將二進製數轉換為其等效的十六進製數。下麵是使用 int() 和 format() 的 Python 實現。

Python3


# Python code to convert from Binary
# to hexadecimal using format()
def binToHexa(n):
    
    # convert binary to int
    num = int(n, 2)
      
    # convert int to hexadecimal
    hex_num = format(num, 'x')
    return(hex_num)
  
# Driver code
if __name__ == '__main__':
    print(binToHexa('1111'))
    print(binToHexa('110101'))
    print(binToHexa('100001111'))
    print(binToHexa('111101111011'))

輸出:

f
35
10f
f7b

相關用法


注:本文由純淨天空篩選整理自GeeksforGeeks大神的英文原創作品 Python Program to Convert Binary to Hexadecimal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。