首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将字符串转换为二进制?

如何将字符串转换为二进制?
EN

Stack Overflow用户
提问于 2013-09-16 02:19:16
回答 5查看 422.9K关注 0票数 139

我需要一种方法来获得python中字符串的二进制表示。例如:

st = "hello world"
toBinary(st)

有没有一种简洁的方法来实现这一点呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-16 02:24:54

像这样的东西?

>>> st = "hello world"
>>> ' '.join(format(ord(x), 'b') for x in st)
'1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100'

#using `bytearray`
>>> ' '.join(format(x, 'b') for x in bytearray(st, 'utf-8'))
'1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100'
票数 148
EN

Stack Overflow用户

发布于 2018-10-11 21:51:10

我们只需要对它进行编码。

'string'.encode('ascii')
票数 47
EN

Stack Overflow用户

发布于 2013-09-16 02:23:50

您可以使用ord()内置函数访问字符串中字符的代码值。如果您随后需要将其格式化为二进制,则string.format()方法将完成此工作。

a = "test"
print(' '.join(format(ord(x), 'b') for x in a))

(感谢Ashwini Chaudhary发布了该代码片段。)

虽然上面的代码可以在Python3中运行,但是如果您假设使用UTF-8以外的任何编码,那么这个问题就会变得更加复杂。在Python 2中,字符串是字节序列,默认情况下采用ASCII编码。在Python3中,字符串被假定为Unicode,并且有一个单独的bytes类型,它的行为更像Python2字符串。如果您希望采用UTF-8以外的任何编码,则需要指定编码。

然后,在Python 3中,您可以这样做:

a = "test"
a_bytes = bytes(a, "ascii")
print(' '.join(["{0:b}".format(x) for x in a_bytes]))

对于简单的字母数字字符串,UTF-8和ascii编码之间的差异不会很明显,但如果要处理的文本包含不在ascii字符集中的字符,则UTF-8和ascii编码之间的差异将变得重要。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18815820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档