gpt4 book ai didi

python - 你如何在 python 中将字符串转换为填充的二进制文件?

转载 作者:太空狗 更新时间:2023-10-30 01:50:50 27 4
gpt4 key购买 nike

我制作了一个将文本翻译成二进制代码的程序,但它真的很乱。这是我的代码:

def converter():
print("message:")
inputMsg = input()
msg = ''
for letter in inputMsg:
if letter == 'a':
msg = msg + '01100001'
elif letter == 'b':
msg = msg + '01100010'
elif letter == 'c':
msg = msg + '01100011'
elif letter == 'd':
msg = msg + '01100100'
elif letter == 'e':
msg = msg + '01100101'
elif letter == 'f':
msg = msg + '01100110'
elif letter == 'g':
msg = msg + '011000111'
elif letter == 'h':
msg = msg + '01101000'
elif letter == 'i':
msg = msg + '01101001'
elif letter == 'j':
msg = msg + '01101010'
elif letter == 'k':
msg = msg + '01101011'
elif letter == 'l':
msg = msg + '01101100'
elif letter == 'm':
msg = msg + '01101101'
elif letter == 'n':
msg = msg + '01101110'
elif letter == 'o':
msg = msg + '01101111'
elif letter == 'p':
msg = msg + '01110000'
elif letter == 'q':
msg = msg + '01110001'
elif letter == 'r':
msg = msg + '01100010'
elif letter == 's':
msg = msg + '01110011'
elif letter == 't':
msg = msg + '01110100'
elif letter == 'u':
msg = msg + '01110101'
elif letter == 'v':
msg = msg + '01110110'
elif letter == 'w':
msg = msg + '01110111'
elif letter == 'x':
msg = msg + '01111000'
elif letter == 'y':
msg = msg + '01111001'
elif letter == 'z':
msg = msg + '01111010'

elif letter == 'A':
msg = msg + '01000001'
elif letter == 'B':
msg = msg + '01000010'
elif letter == 'C':
msg = msg + '01000011'
elif letter == 'D':
msg = msg + '01000100'
elif letter == 'E':
msg = msg + '01000101'
elif letter == 'F':
msg = msg + '01000110'
elif letter == 'G':
msg = msg + '01000111'
elif letter == 'H':
msg = msg + '01001000'
elif letter == 'I':
msg = msg + '01001001'
elif letter == 'J':
msg = msg + '01001010'
elif letter == 'K':
msg = msg + '01001011'
elif letter == 'L':
msg = msg + '01001100'
elif letter == 'M':
msg = msg + '01001101'
elif letter == 'N':
msg = msg + '01001110'
elif letter == 'O':
msg = msg + '01001111'
elif letter == 'P':
msg = msg + '01010000'
elif letter == 'Q':
msg = msg + '01010001'
elif letter == 'R':
msg = msg + '01000010'
elif letter == 'S':
msg = msg + '01010011'
elif letter == 'T':
msg = msg + '01010100'
elif letter == 'U':
msg = msg + '01010101'
elif letter == 'V':
msg = msg + '01010110'
elif letter == 'W':
msg = msg + '01010111'
elif letter == 'X':
msg = msg + '01011000'
elif letter == 'Y':
msg = msg + '01011001'
elif letter == 'Z':
msg = msg + '01011010'
elif letter == ' ':
msg = msg + '00100000'

print('\n',msg,'\n')
print('do again? (y/n)')
yn()

def yn():
yn = input()
if yn == 'y':
converter()
elif yn == 'n':
pass
else:
yn()


converter()

我的输出没问题,但你看我对每个字母都有一个 if/else。有没有其他方法可以更干净、更高效?

最佳答案

>>> st = "hello"
>>> ' '.join(format(ord(x), '08b') for x in st)
'01101000 01100101 01101100 01101100 01101111

这里发生的是我们遍历字符串 st 中的每个字符 x。我们在每一项上运行 ord() ,它将字符 x 转换为表示 Unicode 代码点的整数,例如'T' == 84。这个号码我们然后 .format进入(填充)二进制文件。 08 表示数字要格式化为 8 位长,从左边用 0 填充。 b 然后表示它是二进制或基数 2。数字必须被填充,否则将没有前导零。

关于python - 你如何在 python 中将字符串转换为填充的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31917211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com