簡體   English   中英

如何打印一個二進制數

[英]How to print a binary number

我開始使用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

產量

[65, 10000, 9, 584, 585]

我想打印由ASCII版本插入的實際二進制數字。

您需要在二進制數字0b加上0b

"""Sistema de Cifrado Vernam"""

#alfabeto
alfabeto = {"a":0b00011,"b":0b11001,"c":0b01110,"d":0b01001,"e":0b00001,"f":0b01101,"g":0b11010,"h":0b10100,"i":0b00110,"j":0b01011,"k":0b01111,"l":0b10010,"m":0b11100,
            "n":0b01100,"o":0b11000,"q":0b10111,"r":0b01010,"s":0b00101,"t":0b10000,"u":0b00111,"v":0b11110,"w":0b10011,"x":0b11101,"y":0b10101,"z":0b10001,
            "<":0b01000,"=":0b00010,"fdown":0b11111,"fup":0b11011," ":0b00100, "":0b00000}

"""Mensaje en texto plano"""
#Susituir por input
mensaje = "stack"
m = []
for e in mensaje:
    m.append(alfabeto[e])
print m

輸出:

>>> 
[5, 16, 3, 14, 15]

為何需要0b的詳細信息可以在以下位置找到: https : //docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals

附錄回答以后對問題的修改:

如果要以二進制格式格式化輸出,請使用bin()format()

>>> [format(e, '05b') for e in m]
['00101', '10000', '00011', '01110', '01111']

在Python中,您可以在數字上使用不同的前綴來指定不同的數字基數。

  • 如果數字以0b開頭,則會得到一個二進制數字(以2為底)。 因此, 0b101 == 5
  • 如果數字以0o開頭(在Python 2中僅為0 ),則將得到一個八進制數字(以8為底)。 所以0o101 == 65
  • 如果數字以0x ,則會得到一個十六進制數(以16為底)。 所以0x101 == 257
  • 否則,您將得到一個十進制數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM