Ken*_*Ken 0 python ascii chr python-2.7 ord
我正在尝试将多个 ASCII int 转换回 char 并将其作为单个字符串。我知道如何一项一项地完成,但我想不出如何循环完成。这是我必须获取 ascii_message 变量中所有 ascii int 的代码:
for c in ascii_message:
ascii_int = ord(c)
Run Code Online (Sandbox Code Playgroud)
谢谢!
在 Python 2 中执行此操作的有效方法是将列表加载到bytearray对象中,然后将其转换为字符串。像这样:
ascii_message = [
83, 111, 109, 101, 32, 65, 83, 67,
73, 73, 32, 116, 101, 120, 116, 46,
]
a = bytearray(ascii_message)
s = str(a)
print s
Run Code Online (Sandbox Code Playgroud)
输出
Some ASCII text.
Run Code Online (Sandbox Code Playgroud)
这是在 Python 2 和 3 中都能正常工作的变体。
a = bytearray(ascii_message)
s = a.decode('ASCII')
Run Code Online (Sandbox Code Playgroud)
然而,在 Python 3 中,更常见的是使用不可变bytes对象而不是可变对象bytearray。
a = bytes(ascii_message)
s = a.decode('ASCII')
Run Code Online (Sandbox Code Playgroud)
bytearray在 Python 2 和 3 中也可以使用 a 有效地完成相反的过程。
s = 'Some ASCII text.'
a = list(bytearray(s.encode('ASCII')))
print(a)
Run Code Online (Sandbox Code Playgroud)
输出
[83, 111, 109, 101, 32, 65, 83, 67, 73, 73, 32, 116, 101, 120, 116, 46]
Run Code Online (Sandbox Code Playgroud)
如果您的“数字列表”实际上是一个字符串,您可以将其转换为正确的整数列表,如下所示。
numbers = '48 98 49 48 49 49 48 48 48 49 48 49 48 49 48 48'
ascii_message = [int(u) for u in numbers.split()]
print(ascii_message)
a = bytearray(ascii_message)
s = a.decode('ASCII')
print(s)
Run Code Online (Sandbox Code Playgroud)
输出
[48, 98, 49, 48, 49, 49, 48, 48, 48, 49, 48, 49, 48, 49, 48, 48]
0b10110001010100
Run Code Online (Sandbox Code Playgroud)
这看起来是 14 位数字的二进制表示。所以我想还有进一步的步骤来解决这个难题。祝你好运!
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |