Как преобразовать строку в значение байта? У меня есть строка "hello"
, и я хочу изменить что-то вроде "/x68..."
.
Как преобразовать строку в байтовые массивы?
Ответ 1
Python 2.6 и более поздние версии имеют тип bytearray, который может быть тем, что вы ищете. В отличие от строк, он изменен, т.е. Вы можете изменить отдельные байты "на месте", а не создавать целую новую строку. Он имеет приятное сочетание особенностей списков и строк. И это также делает ваше намерение понятным, что вы работаете с произвольными байтами, а не с текстом.
Ответ 2
Возможно, вы хотите это (Python 2):
>>> map(ord,'hello')
[104, 101, 108, 108, 111]
Для строки Unicode это возвращает кодовые точки Unicode:
>>> map(ord,u'Hello, 马克')
[72, 101, 108, 108, 111, 44, 32, 39532, 20811]
Но закодируйте его, чтобы получить значения байтов для кодировки:
>>> map(ord,u'Hello, 马克'.encode('chinese'))
[72, 101, 108, 108, 111, 44, 32, 194, 237, 191, 203]
>>> map(ord,u'Hello, 马克'.encode('utf8'))
[72, 101, 108, 108, 111, 44, 32, 233, 169, 172, 229, 133, 139]
Ответ 3
Если вы хотите получить шестнадцатеричное строковое представление, которое вы можете сделать:
"hello".encode("hex") # '68656c6c6f'
И чтобы удовлетворить ваше референтное представление (не воспринимайте это всерьез, предположите, что это не то, что вы действительно хотите):
"".join(["/x%02x" % ord(c) for c in "hello"]) # '/x68/x65/x6c/x6c/x6f'