Python 数组中十六进制到二进制的转换

Python 数组中十六进制到二进制的转换,python,python-3.x,Python,Python 3.x,我正在VisualStudio上研究python项目和用户输入,如010203和 我使用以下代码来保存输入: dynamic_array = [ ] hexdec = input("Enter the hex number to binary "); strArray = [hexdec[idx:idx+2] for idx in range(len(hexdec)) if idx%2 == 0] dynamic_array = strArray print(dynamic_array[0]

我正在VisualStudio上研究python项目和用户输入,如
010203
和 我使用以下代码来保存输入:

dynamic_array = [ ] 
hexdec = input("Enter the hex number to binary ");
strArray = [hexdec[idx:idx+2]  for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print(dynamic_array[0] + " IAM" )  
print(dynamic_array[1] + " NOA" )
print(dynamic_array[2] + " FCI" )
因此,输出为:

01 IAM
02 NOA
03 FCI
但是,将十六进制数转换为二进制数的预期输出如下所示:

00000001 IAM
00000010 NOA
00000011 FCI
def toBin(hex_val):
    return '{:08b}'.format(int(hex_val, 16)).zfill(8)

hexdec = input("Enter the hex number to binary ");
dynamic_array = [toBin(hexdec[idx:idx+2]) for idx in range(len(hexdec)) if idx%2 == 0]
print(dynamic_array[0] + " IAM" )  
print(dynamic_array[1] + " NOA" )
print(dynamic_array[2] + " FCI" )

有什么方法可以做到这一点吗?

如果你把十六进制数看作一个整数(数字),那就容易多了。
dynamic_array = [ ] 
hexdec = input("Enter the hex number to binary ");
strArray = [hexdec[idx:idx+2]  for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print((bin(int(dynamic_array[0],16))[2:]).zfill(8)+ " IAM" )  
print((bin(int(dynamic_array[1],16))[2:]).zfill(8) + " NOA" )
print((bin(int(dynamic_array[2],16))[2:]).zfill(8) + " FCI")
关于如何将整数转换为不同的结果,有很多技巧,但是一个有用的字符串表示工具是
.format()
,它可以将整数(和其他)格式化为各种输出

这是以下因素的组合:

解决办法是:

binary = '{:08b}'.format(int(hex_val, 16))
最终结果代码如下所示:

00000001 IAM
00000010 NOA
00000011 FCI
def toBin(hex_val):
    return '{:08b}'.format(int(hex_val, 16)).zfill(8)

hexdec = input("Enter the hex number to binary ");
dynamic_array = [toBin(hexdec[idx:idx+2]) for idx in range(len(hexdec)) if idx%2 == 0]
print(dynamic_array[0] + " IAM" )  
print(dynamic_array[1] + " NOA" )
print(dynamic_array[2] + " FCI" )
Rohit也提出了一个很好的解决方案,但我建议您将
toBin()
的内容与
bin(int())
交换,而不是按照print语句进行交换

我还对代码进行了一些重构,因为我认为用空列表初始化
dynamic_array
毫无意义。Python不需要在为变量赋值之前设置变量。创建
strArray
仅仅是为了用它替换空的
dynamic_数组
也没有意义,因此将三行连接成一行

machnic还指出了一个很好的编程技巧,即在整个字符串上使用
format()
。使代码非常可读:)


希望这有帮助,我的建议也有意义

您可以
格式化
字符串以实现它。您的代码可能如下所示:

dynamic_array = [ ] 
hexdec = input("Enter the hex number to binary ")

strArray = [hexdec[idx:idx+2] for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print("{:08b} IAM".format(int(dynamic_array[0])))
print("{:08b} NOA".format(int(dynamic_array[1])))
print("{:08b} FCI".format(int(dynamic_array[2])))

'{0:b}'。格式(int(hex_val,16)).zfill(8)
。如果你认为十六进制是一个简单的数字,那就容易多了。从这里开始,你只需搜索可能的复制品,谢谢你,谢谢你@Torxed you safe my life谢谢你,谢谢你@machnic you safe my life谢谢你,欢迎光临,快乐编码:)