0

I have a string which I need to encode into binary. It is very important that I get a value string like '11010011100...', because later I need to insert it into the lowest bit of pixels of a gray scale image. (Basically I am hiding a message inside an image.) I am on windows 10, using python 3.6.8.

Following this link I wrote this method to encode it:

def message2bin(msg):
    """
    Converts a msg to binary format
    :param msg: message to convert
    :return: binary content of message in string format
    """
    message_bin = ''.join(format(x, 'b') for x in bytearray(msg, 'utf-8'))
    return message_bin

msg = 'Hello world'
print(message2bin(msg)) 

Output is: 1001000110010111011001101100110111110000011101111101111111001011011001100100

Now I want to have a method to take this binary stream and make the original message like:

bin2message(message2bin(msg))
>> Hello world

I tried the following:

print(bytearray(message2bin(msg), 'utf-8').decode(encoding))

But the output is again:

>> 1001000110010111011001101100110111110000011101111101111111001011011001100100

Also I don't understand why the length of the binary message is 76 and not 78? First of all it takes each character into 7 bits and not 8, which I don't understand why. Also even with 7 bits, 'Hello world' has 11 characters, so I expect length 77, but it is giving me 76? Can someone please explain this to me?

print(len(message2bin(msg)))
>> 76

Thank you all for your valuable input.

1 Answer 1

1
def msgencoder(msg):
    return format(int(bytes(msg, 'utf-8').hex(), base=16), 'b')

def msgdecoder(msg):
    return bytes.fromhex(format(int(msg, base=2), 'x')).decode('utf-8')

a = msgencoder('hello world')
b = msgdecoder(a)

print(b)
hello world
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.