2013-05-04 2 views
-3

У меня есть байтовый массив, закодированный в формате utf-8. Мне нужно получить символы от него и записать в файл. пожалуйста, помогите сказать б массив байтовКак получить символы из массива байтов, закодированного в python

b=[1,1,-127,-125] 

Мне нужно преобразовать каждый байт в символ

+0

Что диапазон символов? -127 не является допустимым значением ASCII ... например. значение ASCII для 'a' равно 97, и вы можете преобразовать его так:' ord ('a') 'или наоборот:' chr (97) '. Но ценности, которые вы указали, не сопоставляются с любыми (читаемыми) символами, поэтому я предполагаю, что что-то еще происходит. – jro

+0

Мне очень хотелось предложить некоторые отрицательные значения. -127 не является допустимым значением sry для предоставления значений incret. –

+0

Возможно, обновите свой вопрос, чтобы использовать реалистичные значения. Взгляните [здесь] (http://www.asciitable.com/) на допустимые значения, которые может обрабатывать функция 'chr'. – jro

ответ

1

Python 2: Вы можете использовать функцию chr(). Еще один намек: не имеет значения, какая кодировка имеет список целых чисел.

Python 3: Вы можете создать экземпляр bytes() из списка.

+0

Могу ли я сказать chr (-127) –

+0

@RaghuDev Нет, 'ValueError: chr() arg не в диапазоне (256)' – pradyunsg

+0

Я считал, что OP может сказать, что он или она ему нравится. Я решил не отвечать на этот вопрос вообще, потому что он показывает нулевые усилия на их стороне. * shrug * –

0

Попробуйте это:

b = [1,1,-127,-125] 
for c in map(lambda x: x if x >= 0 else 256+x, b): 
    print chr(c) 
+0

Спасибо за решение. –

1

Попробуйте это:

>>> def func(x): 
... if x < 0: 
...  x += 256 
... return unichr(x) 

>>> map(func, b) 
[u'\x01', u'\x01', u'\x8a', u'\x8c'] 
Смежные вопросы