Python 数组中十六进制到二进制的转换
我正在VisualStudio上研究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]
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谢谢你,欢迎光临,快乐编码:)