将字母转换为数值
Conversion of alphabet into numerical values
我正在尝试解码 python 中的 Vigenere 密码,知道密文和明文
我有一串文本 'SDFJNKSJDFOSNFDF'
。
我想将每个字母转换为数字,以便能够解码文本,即 A 到 1,B 到 2...
我的想法是用 ascii 转换它,检查大写字母对应的是什么意味着我可以扣除这个,我没有无效的示例代码,我已经写了一些细节这有望让我的想法更容易理解:
我的字符串如下所示:
string = 'SDFJNKSJDFOSN'
然而,当我使用 Vigenere 密码时,我知道我的块长度是 6,所以我也有
blocks = ['SDFJNK', 'SJDFOS', 'N']
我不知道先转换为数字再分解成块还是反过来更容易?我的想法是使用 ascii 文本,例如,如果在 ascii D = 35 中,因为它包含多个字符,我可以用它来重写所有数字,无论它们的 ascii 是什么 - 31 所以 D = 4 和所有其他字母都会效仿
抱歉缺少我的意思的书面示例,但这里的其他问题有太多变化我不知道从哪里开始,理想情况下输出看起来像这样:
output:
['19,4,6,10,14,11','19,10,4,6,15,19','15']
或
output:
['19,4,6,10,14,11,19,10,4,6,15,19,15']
使用ord(character)
获取每个字母的值
string = 'SDFJNKSJDFOSN'
count = 0
for letter in string:
print(f'{ord(letter)=}')
print('\nOr outputs as a list\n')
letter_codes = []
for letter in string:
letter_codes.append(ord(letter))
print(letter_codes)
输出
ord(letter)=83
ord(letter)=68
ord(letter)=70
ord(letter)=74
ord(letter)=78
ord(letter)=75
ord(letter)=83
ord(letter)=74
ord(letter)=68
ord(letter)=70
ord(letter)=79
ord(letter)=83
ord(letter)=78
Or outputs as a list
[83, 68, 70, 74, 78, 75, 83, 74, 68, 70, 79, 83
我正在尝试解码 python 中的 Vigenere 密码,知道密文和明文
我有一串文本 'SDFJNKSJDFOSNFDF'
。
我想将每个字母转换为数字,以便能够解码文本,即 A 到 1,B 到 2...
我的想法是用 ascii 转换它,检查大写字母对应的是什么意味着我可以扣除这个,我没有无效的示例代码,我已经写了一些细节这有望让我的想法更容易理解:
我的字符串如下所示:
string = 'SDFJNKSJDFOSN'
然而,当我使用 Vigenere 密码时,我知道我的块长度是 6,所以我也有
blocks = ['SDFJNK', 'SJDFOS', 'N']
我不知道先转换为数字再分解成块还是反过来更容易?我的想法是使用 ascii 文本,例如,如果在 ascii D = 35 中,因为它包含多个字符,我可以用它来重写所有数字,无论它们的 ascii 是什么 - 31 所以 D = 4 和所有其他字母都会效仿
抱歉缺少我的意思的书面示例,但这里的其他问题有太多变化我不知道从哪里开始,理想情况下输出看起来像这样:
output:
['19,4,6,10,14,11','19,10,4,6,15,19','15']
或
output:
['19,4,6,10,14,11,19,10,4,6,15,19,15']
使用ord(character)
获取每个字母的值
string = 'SDFJNKSJDFOSN'
count = 0
for letter in string:
print(f'{ord(letter)=}')
print('\nOr outputs as a list\n')
letter_codes = []
for letter in string:
letter_codes.append(ord(letter))
print(letter_codes)
输出
ord(letter)=83
ord(letter)=68
ord(letter)=70
ord(letter)=74
ord(letter)=78
ord(letter)=75
ord(letter)=83
ord(letter)=74
ord(letter)=68
ord(letter)=70
ord(letter)=79
ord(letter)=83
ord(letter)=78
Or outputs as a list
[83, 68, 70, 74, 78, 75, 83, 74, 68, 70, 79, 83