python - 如何在列表中以二进制前导 0b 为下标

标签 python binary subscript

所以我有二进制文字,但我需要删除每个文字中的前导“0b”。我该如何订阅它们?这是我当前的代码:

en = [132, 201, 141, 74, 140, 94, 141, 140, 141, 15, 31, 164, 90, 229, 201, 141, 78, 114, 241, 217, 141, 217, 140, 180, 141, 164, 51, 141, 188, 221, 31, 164, 241, 177, 141, 140, 51, 217, 141, 201, 229, 152, 141, 78, 241, 114, 78, 102, 94, 141, 74, 152, 31, 152, 141, 94, 201, 31, 164, 102, 164, 51, 90, 141, 201, 229, 164, 31, 201, 152, 152, 51, 115]

key = 84

#STEP 1 - 1ST XOR WITH KEY

for i in range(0, len(en)):
    en[i] = en[i] ^ key
    en[i] = bin(en[i])
    if len(en[i]) < 10:
        en[i] = '{:#010b}'.format(int(en[i],2))

print(en)
print(' ')

#STEP 2 - USE SBOX SUB ON EACH BLOCK NIBBLE
for i in range(0, len(en)):
    en[i] = list(en[i])

print(en)

最佳答案

只需从格式说明符中删除 # 字符,因为“对于整数,当使用二进制、八进制或十六进制输出时,此选项会添加相应的前缀 '0b'、' 0o' 或 '0x' 为输出值” ( source )。示例:

In [3]: '{:08b}'.format(1)
Out[3]: '00000001'

顺便说一句,没有必要执行那么多转换。您可以缩短第一个循环:

for i in range(len(en)):
    en[i] = '{:08b}'.format(en[i] ^ key)

关于python - 如何在列表中以二进制前导 0b 为下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607211/

相关文章:

python - 根据集体最大长度缩短多个列表,将多余部分移至新列表

java - 如何使用三个参数将节点插入到 Treap 上

r - 如何找到二进制文件的长度

c++ - 将 Big-Endian 结构转换为 Little-Endian C++

c++ - 如何在 Turbo C++ 中使用 Unicode?

subscript - 如何在概念 block 中添加下标(或上标)?

python - 相当于 Go 中的 setdefault 吗?

python - 获取 Mac 空闲时间 C 或 Python

可视化 100k 顶点和 1M 边的 Python 工具?