Чтение байтов из строки Python - PullRequest
4 голосов
/ 27 ноября 2010

У меня есть шестнадцатеричные данные в строке.Мне нужно иметь возможность разбирать строку побайтно, но, читая документы, единственный способ побайтного получения данных - через функцию f.read (1).

Как мне разобрать строку шестнадцатеричного числасимволы, либо в список, либо в массив, либо в некоторую структуру, где я могу получить доступ к байту за байтом.

Ответы [ 4 ]

7 голосов
/ 27 ноября 2010

Похоже, что вы действительно хотите (Python 2.x):

from binascii import unhexlify
mystring = "a1234f"
print map(ord,unhexlify(mystring))

[161, 35, 79]

Конвертирует каждую пару шестнадцатеричных символов в целочисленное представление.

В Python 3.x вы можете сделать:

>>> list(unhexlify(mystring))
[161, 35, 79]

Но поскольку результатом unhexlify является байтовая строка, вы также можете просто получить доступ к элементам:

>>> L = unhexlify(string)
>>> L
b'\xa1#O'
>>> L[0]
161
>>> L[1]
35
3 голосов
/ 27 ноября 2010
a = 'somestring'
print a[0]        # first byte
print ord(a[1])   # value of second byte

(x for x in a)    # is a iterable generator
3 голосов
/ 27 ноября 2010

Вы можете перебирать строку так же, как и любую другую последовательность.

for c in 'Hello':
  print c
0 голосов
/ 27 ноября 2010
mystring = "a1234f"
data = list(mystring)

Данные будут списком, где каждый элемент является символом из строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...