给定一个二进制数,任务是编写一个 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
相关用法
- Python PIL BoxBlur()用法及代码示例
- Python numpy.less()用法及代码示例
- Python Sympy Permutation.list()用法及代码示例
- Python Matplotlib.figure.Figure.subplots_adjust()用法及代码示例
- Python numpy.tril()用法及代码示例
- Python Matplotlib.pyplot.matshow()用法及代码示例
- Python __file__用法及代码示例
- Python Pandas Panel.add()用法及代码示例
- Python random.getstate()用法及代码示例
- Python Scipy integrate.quadrature()用法及代码示例
- Python Pgmagick edge()用法及代码示例
- Python numpy.random.standard_normal()用法及代码示例
- Python Pandas tseries.offsets.CustomBusinessHour.onOffset用法及代码示例
- Python Matplotlib.pyplot.thetagrids()用法及代码示例
- Python Pandas TimedeltaIndex.memory_usage用法及代码示例
- Python os.path.normcase()用法及代码示例
- Python Pandas DatetimeIndex.day用法及代码示例
- Python random.triangular()用法及代码示例
- Python PyTorch cos()用法及代码示例
- Python Numpy recarray.tostring()用法及代码示例
注:本文由纯净天空筛选整理自GeeksforGeeks大神的英文原创作品 Python Program to Convert Binary to Hexadecimal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。