我需要一种在 python 中获取字符串的二进制表示的方法。例如
st = "hello world"
toBinary(st)
是否有一些巧妙的方式来做到这一点?
原文由 user1090614 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要一种在 python 中获取字符串的二进制表示的方法。例如
st = "hello world"
toBinary(st)
是否有一些巧妙的方式来做到这一点?
原文由 user1090614 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果用二进制表示 bytes
类型,则可以只使用 encode
字符串对象的方法,该方法使用传递的编码类型将字符串编码为字节对象。您只需要确保将正确的编码传递给 encode
函数。
In [9]: "hello world".encode('ascii')
Out[9]: b'hello world'
In [10]: byte_obj = "hello world".encode('ascii')
In [11]: byte_obj
Out[11]: b'hello world'
In [12]: byte_obj[0]
Out[12]: 104
否则,如果您希望它们以零和一的形式出现——二进制表示——作为一种更 pythonic 的方式,您可以先将字符串转换为字节数组,然后使用 bin
中的函数 map
:
>>> st = "hello world"
>>> map(bin,bytearray(st))
['0b1101000', '0b1100101', '0b1101100', '0b1101100', '0b1101111', '0b100000', '0b1110111', '0b1101111', '0b1110010', '0b1101100', '0b1100100']
或者你可以加入它:
>>> ' '.join(map(bin,bytearray(st)))
'0b1101000 0b1100101 0b1101100 0b1101100 0b1101111 0b100000 0b1110111 0b1101111 0b1110010 0b1101100 0b1100100'
请注意,在 python3 中,您需要为 bytearray
函数指定编码:
>>> ' '.join(map(bin,bytearray(st,'utf8')))
'0b1101000 0b1100101 0b1101100 0b1101100 0b1101111 0b100000 0b1110111 0b1101111 0b1110010 0b1101100 0b1100100'
您还可以在 python 2 中使用 binascii
模块:
>>> import binascii
>>> bin(int(binascii.hexlify(st),16))
'0b110100001100101011011000110110001101111001000000111011101101111011100100110110001100100'
hexlify
返回二进制数据的十六进制表示,然后您可以通过指定 16 作为其基数转换为 int,然后使用 bin
将其转换为二进制。
原文由 Mazdak 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
像这样的东西?