Почему мы все еще можем прочитать значения байтов в Python - PullRequest
2 голосов
/ 15 мая 2019

Поэтому я попытался преобразовать мои данные в байты, чтобы люди не могли их легко прочитать ... Но почему-то в Python байты, очевидно, означают наличие b 'и' по обе стороны от моей строки. Я не вижу преобразования строки в байты.

>>> bytes('hello', 'utf-8')
b'hello'
>>> 'hello'.encode('utf-8')
b'hello'

1 Ответ

0 голосов
/ 15 мая 2019

Когда вы говорите байты, я предполагаю, что вы хотите преобразовать в биты.

>>> a = 'stackoverflow'
>>> b = bytes(a, 'utf-8')
>>> c =  ' '.join(["{0:b}".format(x) for x in b])
>>> c
'1110011 1110100 1100001 1100011 1101011 1101111 1110110 1100101 1110010 1100110 1101100 1101111 1110111'


>>> ' '.join(map(bin,bytearray(b)))
'0b1110011 0b1110100 0b1100001 0b1100011 0b1101011 0b1101111 0b1110110 0b1100101 0b1110010 0b1100110 0b1101100 0b1101111 0b1110111'

Еще одна библиотека третьей части Bitarray также удобна в этих ситуациях.

>>> import bitarray
>>> a = bitarray.bitarray()
>>> a
bitarray()
>>> a.frombytes('stackoverflow'.encode('utf-8'))
>>> a
bitarray('01110011011101000110000101100011011010110110111101110110011001010111001001100110011011000110111101110111')
>>> a.tobytes()
b'stackoverflow'
...