2010-11-26 3 views
3

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

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

ответ

0
mystring = "a1234f" 
data = list(mystring) 

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

3
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

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

for c in 'Hello': 
    print c 
7

Это походит на то, что вы, возможно, на самом деле хотите (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 
+0

+1 для чтения между линиями. – 2010-12-01 03:10:22

Смежные вопросы