将Unicode转换为二进制

时间:2017-12-22 22:53:51

标签: python python-3.x utf-8

我正在尝试使用this answer here将阿拉伯语文本转换为utf8编码字节,然后转换为二进制文件。

首先,我使用了示例中的代码:

'{:b}'.format(int(u'سلام'.encode('utf-8').encode('hex'), 16))

但我收到了这个错误:

AttributeError: 'bytes' object has no attribute 'encode'

我也删除了.encode('hex'),但仍然会出现同样的错误。

有没有办法将utf8代码转换为二进制代码,反之亦然?

1 个答案:

答案 0 :(得分:1)

这个怎么样:

>>> ''.join('{:08b}'.format(b) for b in 'سلام'.encode('utf8'))
'1101100010110011110110011000010011011000101001111101100110000101'

迭代编码的bytes对象,每次迭代得到一个0..255范围内的整数。 然后整数以二进制表示法格式化,零填充最多8位。 然后将所有内容与str.join()粘合在一起。

对于反向,您链接到的问题的答案中给出的方法可以适用于Python 3,如下所示(s是上述示例的输出,即。str 0s和1s):

>>> bytes(int(b, 2) for b in re.split('(........)', s) if b).decode('utf8')
'سلام'