所以我试图将二进制字符串添加到列表中,但我添加的是每个单独的字符。我是 python 的新手,所以我不太确定自己该怎么做(另外,在获取字符串时,我需要忽略每个二进制字符串之间的空格)
str_msg = "This is a message!"
final = ' '.join(format(ord(x), 'b') for x in str_msg)
print(final)
给出:
1010100 1101000 1101001 1110011 100000 1101001 1110011 100000 1100001 100000 1101101 1100101 1110011 1110011 1100001 1100111 1100101 100001
但我随后尝试以这种方式创建列表:
binlist = []
for value in final:
binlist.append(value)
print(binlist)
我得到:
['1', '0', '1', '0', '1', '0', '0', ' ', '1', '1', '0', '1', '0', '0', '0', ' ', '1', '1', '0', '1', '0', '0', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '0', '0', '0', '0', '0', ' ', '1', '1', '0', '1', '0', '0', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '0', '0', '0', '0', '0', ' ', '1', '1', '0', '0', '0', '0', '1', ' ', '1', '0', '0', '0', '0', '0', ' ', '1', '1', '0', '1', '1', '0', '1', ' ', '1', '1', '0', '0', '1', '0', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '1', '1', '0', '0', '1', '1', ' ', '1', '1', '0', '0', '0', '0', '1', ' ', '1', '1', '0', '0', '1', '1', '1', ' ', '1', '1', '0', '0', '1', '0', '1', ' ', '1', '0', '0', '0', '0', '1']
请您参考如下方法:
表达式:
' '.join(format(ord(x), 'b') for x in str_msg)
使用生成器表达式生成字符串中的每个字符:str_msg 转换为其 ASCII 值,以二进制表示,然后传递给 .join 方法字符串 ' '(一个空格)。结果,您将获得该字符串的二进制表示的以空格分隔的字符串。
听上去,您需要一个包含每个字符的二进制表示的字符串列表。
这可以通过列表理解来实现,它具有与生成器表达式相同的语法,但使用方括号:
[format(ord(x), 'b') for x in str_msg]
