Python - 将整数字符串转换为Ascii

时间:2017-05-22 12:56:25

标签: python nfc raspberry-pi3

目前我正在使用NFC标签阅读器开展项目。所有数据都以十进制值存储,我设法跟踪我需要的数据,并从中删除每个特殊字符。我现在想将它转换为ascii,因此它打印出一个可读的数据版本。

变量setvar是一个字符串,其值为" 84 97 103 32 78 117 109 98 101 114 32 49"

这是我尝试使用的代码:

print "ASCII value: ", ´,´.join(str(chr(c)) for c in setvar)

遗憾的是,这会产生一个错误,即此函数需要整数。现在我的下一步是将我的字符串转换为数组(?)并使用循环读取该数组的每个项目。可悲的是,我不知道该怎么做。

怎么做?

5 个答案:

答案 0 :(得分:1)

我只是解码相应的bytes

>>> s = "84 97 103 32 78 117 109 98 101 114 32 49"
>>> bytes(map(int, s.split())).decode()
'Tag Number 1'

(请注意decode可以使用可选的encoding参数,默认值为'utf-8'。)

答案 1 :(得分:0)

你想要分割字符串,而不是迭代字符,然后转换为int然后再回到char:

In [5]: [chr(int(c)) for c in x.split(' ')]
Out[5]: ['T', 'a', 'g', ' ', 'N', 'u', 'm', 'b', 'e', 'r', ' ', '1']

答案 2 :(得分:0)

假设setvar是整数ascii值的字符串:

print "ASCII value: " + ','.join(chr(int(c)) for c in setvar.split())

答案 3 :(得分:0)

你可以试试这个:

print ', '.join(chr(int(i)) for i in setvar.split())

chr会将任何整数转换为字母ASCII字母。

答案 4 :(得分:0)

你可以尝试这样的事情。

    >>> s = "84 97 103 32 78 117 109 98 101 114 32 49"
    >>> ''.join(chr(int(item)) for item in s.split())
    'Tag Number 1'
    >>>