如何在列表中下标二进制前导 0b
How to subscript out binary leading 0b in a list
所以我有二进制文字,但我需要删除每个文字中的前导“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)
所以我有二进制文字,但我需要删除每个文字中的前导“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)