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

3

目前我正在从事一个与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)

遗憾的是,这会产生一个错误,需要整数作为函数参数。下一步,我将把字符串转换为数组(?)并使用循环读取该数组中的每个项目。不幸的是,我不知道如何做到这一点。

如何做到这一点?


setvar是什么?它是你的字符串 "84 97 ... 32 49" 吗? - Mike Scotty
你能不能只写成 int(setvar.replace(" ", "")) - jockster
@jockster 不是很对,你所说的是另一回事。 - kyriakosSt
在使用 chr 函数之前,你需要将其转换为整数,即 ...chr(int(c)... - Simeon Aleksov
5个回答

1
你可以尝试这个:

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

chr会将任何整数转换为其对应的ASCII字母。


谢谢!正是我想要的。 - Hyxeln

1

我只需要解码相应的字节

>>> 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'。)

0

你想要分割字符串,而不是迭代字符,然后将其转换为整数再转回字符:

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

0
假设setvar是您的整数ASCII值字符串:
print "ASCII value: " + ','.join(chr(int(c)) for c in setvar.split())

@Chris_Rands,真的。没有仔细检查问题中的代码就复制了它。现在已经编辑过了。 - kyriakosSt

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'
    >>> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接