如何在循环中将ASCII整数转换回char?

时间:2017-10-13 01:47:45

标签: python python-2.7 ascii chr ord

我正在尝试将多个ASCII int转换回char并将其作为单个字符串。我知道如何一个接一个地做,但我想不出如何在循环中做到这一点。这是我必须在我的ascii_message变量中获取所有ascii int的代码:

for c in ascii_message: 
    ascii_int = ord(c)

谢谢!

1 个答案:

答案 0 :(得分:4)

在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

<强>输出

Some ASCII text.

这是一个可以在Python 2&amp; 3。

a = bytearray(ascii_message)
s = a.decode('ASCII')

但是,在Python 3中,使用不可变bytes对象而不是可变bytearray更常见。

a = bytes(ascii_message)
s = a.decode('ASCII')

在Python 2和3中使用bytearray也可以有效地完成相反的过程。

s = 'Some ASCII text.'
a = list(bytearray(s.encode('ASCII')))
print(a)

<强>输出

[83, 111, 109, 101, 32, 65, 83, 67, 73, 73, 32, 116, 101, 120, 116, 46]

如果您的“数字列表”实际上是一个字符串,您可以将其转换为正确的整数列表。

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)

<强>输出

[48, 98, 49, 48, 49, 49, 48, 48, 48, 49, 48, 49, 48, 49, 48, 48]
0b10110001010100

它看起来是14位数的二进制表示。所以我想有更多的步骤来解决这个难题。祝你好运!