我开始在Python中使用Vernam密码,显然,在Python中使用二进制文件时,有些东西我不知道,例如,如果我在控制台中print 00011
,它将返回一个9
。在
"""Sistema de Cifrado Vernam"""
#alfabeto
alfabeto = {"a":00011,"b":11001,"c":01110,"d":01001,"e":00001,"f":01101,"g":11010,"h":10100,"i":00110,"j":01011,"k":01111,"l":10010,"m":11100,
"n":01100,"o":11000,"q":10111,"r":01010,"s":00101,"t":10000,"u":00111,"v":11110,"w":10011,"x":11101,"y":10101,"z":10001,
"<":01000,"=":00010,"fdown":11111,"fup":11011," ":00100, "":00000}
"""Mensaje en texto plano"""
#Susituir por input
mensaje = "stack"
m = []
for e in mensaje:
m.append(alfabeto[e])
print m
输出
^{pr2}$我想打印实际的二进制数,而不是ASCII版本。在
您需要在二进制数前面加上
0b
:该输出:
^{pr2}$关于为什么
0b
是必需的详细信息可以在这里找到:https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals附录,以回答问题的后续编辑:
如果要将输出格式化为二进制,请使用bin()或format():
在Python中,可以在数字上使用不同的前缀来指定不同的基数。在
0b
开头,则得到一个二进制数(以2为底)。所以,0b101 == 5
。在0o
开头(或者在python2中仅仅是0
),则得到一个 八进制数(以8为底)。所以0o101 == 65
。在0x
开头,则得到一个十六进制数(以16为底)。所以0x101 == 257
。在相关问题 更多 >
编程相关推荐