2010-07-15 4 views
3

Я хочу получить список ints, представляющий байты в строке.Как преобразовать байты в строку в целые числа? Python

+0

Python 2.x или 3.x? – dan04

+0

Если вы не имеете в виду значения ASCII (как вы написали в комментарии ниже), что * вы * имеете в виду? –

+0

Можете ли вы привести пример того, как выглядит строка, если вас не интересуют значения ascii? –

ответ

5

Вы имеете в виду значения ascii?

nums = [ord(c) for c in mystring] 

или

nums = [] 
for chr in mystring: 
    nums.append(ord(chr)) 
+1

Почему downvote? –

+0

Я не понимаю, почему это нисходящее ... –

+0

Мне было интересно то же самое ... спасибо за парней + 1. –

7

Один из вариантов для Python 2.6 и позже, чтобы использовать bytearray:

>>> b = bytearray('hello') 
>>> b[0] 
104 
>>> b[1] 
101 
>>> list(b) 
[104, 101, 108, 108, 111] 

Для Python 3.x вам понадобится bytes объект, а не в любом случае, и поэтому может просто сделать это:

>>> b = b'hello' 
>>> list(b) 
[104, 101, 108, 108, 111] 
+0

Для уточнения для ОП эти значения * являются * значениями ascii. –

2

Возможно, вы имеете в виду строку байтов, например, полученную через сеть, представляющую пару целочисленных значений?

В этом случае вы можете «распаковать» строку в целочисленные значения, используя unpack() и указав «i» для целого в качестве строки форматирования.

См: http://docs.python.org/library/struct.html

+0

@Amarghosh: Это то, что я ставлю здесь :). Не то, чтобы входные данные представляли собой строку нулей и единиц, но фактические реальные двоичные данные, которые, как представляется, представляют собой некоторые целые числа. Я узнал об этом, когда попытался решить Vortex0, который, как я подозреваю, пытается решить вопрос. (Http://www.overthewire.org/wargames/vortex/level0.shtml) Извинения за комментарий здесь, мне кажется чтобы не смог прокомментировать фактический вопрос. (Я здесь новый!) – Daan

+0

Умный догадка, +1. К настоящему моменту автор объяснил, чего он действительно хотел, но так или иначе ... –

+0

Вам нужно 50 представителей, чтобы прокомментировать сообщения других людей - я просто сделал вас на 10 пунктов ближе. – Amarghosh

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