【发布时间】:2015-11-23 14:53:24
【问题描述】:
我遇到了 chr() 函数的问题。我的代码首先获取用户输入,将其放入一个数组中,然后使用 ord 函数将其转换为相应的数字值,并对关键字执行相同操作。然后它使用 zip 函数将两个数组加在一起以获取数字,并使用其上的 chr 函数将其放回文本。问题是chr函数输出不正确
例如
c的数值是99
h的数值是104
它们加起来就是 203
我的代码输出\xcb
当我做了一个单独的代码时
leb = chr(203)
print leb
输出 203 为 Ë 这是一个单数字符,我需要解码它
这是我的代码
num_string = raw_input("enter what you would like to encrypt")
num_list = []
for num in num_string:
num_list.append(ord(num))
print num_list
key_string = raw_input("enter the keyword")
key_list = []
for key in key_string:
key_string = key_list.append(ord(key))
print key_list
end_string = [x + y for x, y in zip(num_list, key_list)]
end_list = []
print end_string
for end in end_string:
end_list.append(chr(end))
print end_list
运行时这是输出
输入你想加密的猫
[99]
[99, 97]
[99, 97, 116]
输入关键字帽子
[104]
[104, 97]
[104, 97, 116]
[203, 194, 232]
['\xcb', '\xc2', '\xe8']
为什么我的代码会这样,我该如何解决?
【问题讨论】:
-
ASCII码最多可达127
-
我不知道您在看什么 ascii 表,但即使使用扩展的 ascii 表 203 也不等于 Ë。 asciitable.com
-
您所期望的是特殊代码页中的字符
\xcb。没有错,只是您对结果的期望。 -
打印列表使用
__repr__,而不是__str__,来显示列表的内容。 -
@Pynchia:ASCII 码最多可运行 127 个,但 Python 允许 [0-255] 范围内的简单字节字符。 ASCII 中的下半部分,解释或上半部分取决于系统编码。在 latin1 中,代码 0xcb (203) 是字符
u'\xcb'或Ë