Точно такое же поведение между 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]