如何将此列表转换为字符串?

Posted

技术标签:

【中文标题】如何将此列表转换为字符串?【英文标题】:How do I turn this list into a string? 【发布时间】:2021-11-18 04:54:39 【问题描述】:

我正在尝试将二进制转换为十进制到 ASCII。使用此代码,我可以获取二进制输入并将其拆分为 7 位块。

def binary_to_ascii7bits(bstring):
    n = 7
    byte = [bstring[i:i+n] for i in range(0, len(bstring), n)]
    print(byte)

为了使用 chr 函数,我需要能够将每个 7 位子字符串转换为十进制数。如果我尝试将此列表转换为字符串,它会打印例如“['1111000']”,但字符串中不能包含方括号和撇号。我该怎么做才能解决这个问题?

【问题讨论】:

你能举例输入吗? print('\n'.join(byte))? 您知道低于 32 的 ASCII 字符本质上是不可打印的(其中一些是打印控件,例如制表符和换行符),因此根据提供的二进制字符串,您的输出可能看起来很奇怪。 【参考方案1】:

首先,对于chr 函数,它应该是整数,而不是小数。

在打印函数之前添加这个列表理解 -

byte = [chr(64 + int(i)) for i in byte]

这将为字节提供字符串。我想这就是你想要的。

【讨论】:

【参考方案2】:

您可以再添加一行(如下所示)来实现您所描述的。

您有int(..., 2) 将二进制数的字符串表示形式转换为整数。然后申请chr 得到一个字符。这个过程是使用(列表)推导完成的,因此结果是一个字符列表。然后使用join 制作一个字符串。

text = '1111000' * 10

def binary_to_ascii7bits(bstring):
    n = 7
    byte = [bstring[i:i+n] for i in range(0, len(bstring), n)]
    return ''.join(chr(int(x, 2)) for x in byte)

print(binary_to_ascii7bits(text)) # xxxxxxxxxx

【讨论】:

以上是关于如何将此列表转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串转换为字典或列表?

将字符串变量转换为列表 [Groovy]

如何使用骆驼杰克逊将 JSONArray 转换为对象列表

如何将此 linux 命令转换为 python 字符串? [复制]

如何将此字符串转换为具有这种格式的日期?

如何将此十六进制字符串转换为长字符串?