创建一个在 Python 中给出输入的动态数组

我在有关 Python 的 Visual Studio 上工作。我有一个十六进制输入看起来像:


0110

我将此十六进制数转换为二进制数,它看起来像:


00000001 0001000

一段时间后,我想创建一个动态数组以将这些值保留在数组中,并根据给定的输入更改大小,例如它可以是01100c并且数组大小将增加到 3。所以,我使用以下代码:


dynamic_arraylist = [ ]

print("Enter a hex for converting binary");

hexdec = input("Enter any number in Hexadecimal form: ");

bin_value = bin(int(hexdec,16))[2:]

bin_value = (8 - (len(bin_value)% 8)) * '0' + bin_value

bytes = [bin_value[i:i+8] for i in range(0, len(bin_value), 8)]

' '.join(bytes) 

number_length = len(' '.join(bytes))

elements = ' '.join(bytes) 



for i in range(number_length):

    data = int(elements)

    dynamic_arraylist.append(data)

但是我得到一个错误,因为data = int(elements)这行代码可能不理解我的代码,它给出了一个错误:


ValueError("invalid literal for int() with base 10

有没有办法解决这个问题?


慕尼黑8549860
浏览 197回答 2
2回答

翻过高山走不出你

我在这里总结讨论,因为它变得有点冗长。基本上你想要的是用户输入一个应该被解释为许多 2 位十六进制值的数字。例如:0110应解释为:0x010x10为了做到这一点,我首先将您的输入字符串拆分为一个 2 位字符串数组。然后我将转换每个元素并将其附加到您的二进制元素数组:strArray = [hexdec[idx:idx+2] for idx in range(len(hexdec)) if idx%2 == 0]for elem in strArray:    bin_value = bin(int(elem,16))[2:]    bin_value = (8 - (len(bin_value)% 8)) * '0' + bin_value        dynamic_arrayList.append(bin_value)当用户输入0110这会产生:['00000001', '00010000']

呼啦一阵风

该int()构造函数不接受字符串用空格,所以你应该join没有之一。改变:number_length = len(' '.join(bytes)) elements = ' '.join(bytes)至:number_length = len(''.join(bytes)) elements = ''.join(bytes)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python