python – How to convert string to binary?
python – How to convert string to binary?
Something like this?
>>> 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
If by binary you mean bytes
type, you can just use encode
method of the string object that encodes your string as a bytes object using the passed encoding type. You just need to make sure you pass a proper encoding to encode
function.
In [9]: hello world.encode(ascii)
Out[9]: bhello world
In [10]: byte_obj = hello world.encode(ascii)
In [11]: byte_obj
Out[11]: bhello world
In [12]: byte_obj[0]
Out[12]: 104
Otherwise, if you want them in form of zeros and ones –binary representation– as a more pythonic way you can first convert your string to byte array then use bin
function within map
:
>>> st = hello world
>>> map(bin,bytearray(st))
[0b1101000, 0b1100101, 0b1101100, 0b1101100, 0b1101111, 0b100000, 0b1110111, 0b1101111, 0b1110010, 0b1101100, 0b1100100]
Or you can join it:
>>> .join(map(bin,bytearray(st)))
0b1101000 0b1100101 0b1101100 0b1101100 0b1101111 0b100000 0b1110111 0b1101111 0b1110010 0b1101100 0b1100100
Note that in python3 you need to specify an encoding for bytearray
function :
>>> .join(map(bin,bytearray(st,utf8)))
0b1101000 0b1100101 0b1101100 0b1101100 0b1101111 0b100000 0b1110111 0b1101111 0b1110010 0b1101100 0b1100100
You can also use binascii
module in python 2:
>>> import binascii
>>> bin(int(binascii.hexlify(st),16))
0b110100001100101011011000110110001101111001000000111011101101111011100100110110001100100
hexlify
return the hexadecimal representation of the binary data then you can convert to int by specifying 16 as its base then convert it to binary with bin
.
python – How to convert string to binary?
We just need to encode it.
string.encode(ascii)