为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑8549860 2021-07-09 19:01:00
我在有关 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_valuebytes = [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有没有办法解决这个问题?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

我在这里总结讨论,因为它变得有点冗长。基本上你想要的是用户输入一个应该被解释为许多 2 位十六进制值的数字。例如:


0110

应解释为:


0x01

0x10

为了做到这一点,我首先将您的输入字符串拆分为一个 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']


查看完整回答
反对 回复 2021-07-13
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

int()构造函数不接受字符串用空格,所以你应该join没有之一。

改变:

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

至:

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


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号