Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2009 10:10:36

kpoxa
От:
Зарегистрирован: 2009-11-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

Есть бинарный файл. Формат известен. Считываю первые 4 байта в переменную:
s = file.read(4)

А далее не могу прочитать эту переменную как int.
Как это в питоне делается?



Офлайн

#2 Ноя. 2, 2009 11:17:14

k0sh
От:
Зарегистрирован: 2009-10-08
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

int(s)



Офлайн

#3 Ноя. 2, 2009 11:18:31

kpoxa
От:
Зарегистрирован: 2009-11-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

если бы это работало, то я бы не спрашивал :(



Офлайн

#4 Ноя. 2, 2009 11:23:50

kpoxa
От:
Зарегистрирован: 2009-11-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

Вот из документации

int(x )
Преобразует строку или число (любого типа, кроме комплексного) x в простое
целое (int).

В моем же случае, x - “сырая память”, а не число и не строка.
Потому эта функция не работает.

Я питон не понимаю, потому и спрашиваю, как делаются преобразования типов???



Офлайн

#5 Ноя. 2, 2009 11:26:55

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

kpoxa
Есть бинарный файл. Формат известен.
Если формат известен - воспользуйтесь модулем struct: http://docs.python.org/library/struct.html



Офлайн

#6 Ноя. 2, 2009 11:29:16

k0sh
От:
Зарегистрирован: 2009-10-08
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

Упс сори, не правильно понял вопрос:

>>> struct.unpack("<L", s)[0]



Офлайн

#7 Ноя. 2, 2009 11:45:52

kpoxa
От:
Зарегистрирован: 2009-11-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

regall
kpoxa
Есть бинарный файл. Формат известен.
Если формат известен - воспользуйтесь модулем struct: http://docs.python.org/library/struct.html
Формат известен мне. Но это не общедоступный формат.



Офлайн

#8 Ноя. 2, 2009 11:47:00

kpoxa
От:
Зарегистрирован: 2009-11-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

k0sh
Упс сори, не правильно понял вопрос:
>>> struct.unpack("<L", s)[0]
Упс, а я не понял ответ :(



Офлайн

#9 Ноя. 2, 2009 11:50:28

k0sh
От:
Зарегистрирован: 2009-10-08
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

А что конкретно не понятно?

import struct
s = f.read(4)
i = struct.unpack("<L", s)[0]
unpack(format, string)
Распаковывает строку string в соответствии с форматом format и возвра-
щает кортеж объектов. Строка должна содержать ровно такое количество дан-
ных, которое требует строка формата, то есть длина строки должна быть равной
calcsize(format).



Отредактировано (Ноя. 2, 2009 11:51:34)

Офлайн

#10 Ноя. 2, 2009 11:51:41

kpoxa
От:
Зарегистрирован: 2009-11-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

как преобразовать к заданному типу?

Пока я придумал только один путь. Не думаю, что он оптимальный.

s = file.read(4)
i = ord(s) + ord(s) * 256 + ord(s) * 256 * 256 + ..

Идея в том, чтобы восстановить целое из потока символов.
В общем, если возможен только такой путь (во что трудно поверить), то это крайне низко опускает питон в моих глазах. Но я новичок.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version