Точно такое же поведение между Java String.getBytes () и строкой Python -> байтами? - PullRequest
12 голосов
/ 21 февраля 2012

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

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

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

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

Спасибо.

EDIT:

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

Ответы [ 3 ]

8 голосов
/ 21 февраля 2012

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

secret = "secret"
secret.encode()

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

7 голосов
/ 21 февраля 2012

В python-2.7 есть bytearray():

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

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

4 голосов
/ 21 февраля 2012

Я не уверен, что точно то же самое, поскольку в 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]
...