Точно такое же поведение между Java String.getBytes() и строкой Python → байтами?

В моем Java-коде у меня есть следующий фрагмент:

String secret = "secret";
byte[] thebytes = secret.getBytes();

Я хотел бы иметь точно тот же результат в python. Как я могу это сделать?

secret = 'secret'
thebytes = ??? ??? ???

Спасибо.

EDIT:

Кроме того, будет интересно иметь решение для Python 2.x и 3.x

Ответ 1

Это не так просто, как может показаться на первый взгляд, потому что Python имеет исторически сконфигурированные байт-массивы и строки. Короткий ответ на Python 3:

secret = "secret"
secret.encode()

Но вы должны прочитать, как работает Python с unicode, строками и байтами.

Ответ 2

В python-2.7 там bytearray():

>>> s = 'secret'
>>> b = bytearray(s)
>>> for i in b:
...    print i
115
101
99
114
101
116

Если это то, что вы ищете.

Ответ 3

Я точно не знаю, так как у Python нет byte, но это может сделать трюк:

bytes = [ord(c) for c in "secret"] # => [115, 101, 99, 114, 101, 116]

Или используя map, как предложил katrielalex, только потому, что он довольно:

bytes = map(ord, "secret") # => [115, 101, 99, 114, 101, 116]