Python 2.5 convert string to binary
Asked Answered
R

2

5

I know this is easily possible in python 2.6. But what is the easiest way to do this in Python 2.5?

x = "This is my string"
b = to_bytes(x)  # I could do this easily in 2.7 using bin/ord 3+ could use b"my string"
print b

Any suggestions? I want to take the x and turn it into

00100010010101000110100001101001011100110010000001101001011100110010000001101101011110010010000001110011011101000111001001101001011011100110011100100010

Riboflavin answered 18/12, 2011 at 17:6 Comment(5)
Is your 'xml string' really a str() and not a unicode() object?Doctrine
Its an str(). Formed almost exactly as above, I could make it unicode..Riboflavin
Actually, byte literal notation is in 2.6+.Schroeder
try echo -n 'This is my string' | xxd -bAriew
related: Convert Binary to ASCII and vice versaSinegold
A
7

This one-line works:

>>> ''.join(['%08d'%int(bin(ord(i))[2:]) for i in 'This is my string'])
'0101010001101000011010010111001100100000011010010111001100100000011011010111100100100000011100110111010001110010011010010110111001100111'

EDIT

You can write bin() yourself

def bin(x):
    if x==0:
        return '0'
    else:
        return (bin(x/2)+str(x%2)).lstrip('0') or '0'
Ariew answered 10/1, 2012 at 15:45 Comment(1)
@Riboflavin You can write bin() yourselfAriew
N
1

I think you could do it in a cleaner way like this:

>>>''.join(format(ord(c), '08b') for c in 'This is my string')
'0101010001101000011010010111001100100000011010010111001100100000011011010111100100100000011100110111010001110010011010010110111001100111'

the format function will represent the character in a 8 digits, binary representation.

Nautical answered 26/9, 2013 at 9:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.