Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2009 09:36:18

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

чтение и запись бинарного файла

здравствуйте

прочитал весь форум по данному вопросу. но что то никак не разобрался.

1. читаю файл побайтово:

file=open('c:\\1.dat','rb')
data=file.read(1)
file.close()
print ('data = '+str(data[0]))
получаю значение
data = 21
как теперь переветси его, в переменную в нормальном виде, т.е. в букву ‘d’
если открыть файл в текстовом формате то это буква ‘d’

2. записываю бинарный файл
import struct
file=open('c:\\2.dat','wb')
file.write(struct.pack('L',26))
file.close()
но в файл записывается 4 байта: 1А 00 00 00
мне надо чтоб только один байт. что я делаю не так. спасибо

спасибо

P.S. нет ли где описание модуля struct на русском языке

Отредактировано (Ноя. 5, 2009 09:46:00)

Офлайн

#2 Ноя. 5, 2009 10:39:20

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

чтение и запись бинарного файла

Документация лежит здесь
http://docs.python.org/library/struct.html
Ты упаковываешь число 26 в unsigned long, которое занимает 4 байта… посмотри в табличке в доках.
По поводу чтения.
ord('d')==100, открой файл через hex редактор, и посмотри что да как…



Офлайн

#3 Ноя. 5, 2009 11:03:07

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

чтение и запись бинарного файла

igor.kaist
Документация лежит здесь
http://docs.python.org/library/struct.html
Ты упаковываешь число 26 в unsigned long, которое занимает 4 байта… посмотри в табличке в доках.
спасибо понял
прописал вот так. файл получается правильный
file.write(struct.pack('b',i))
igor.kaist
По поводу чтения.
ord('d')==100, открой файл через hex редактор, и посмотри что да как…
ошибся в вопросе. извиняюсь

я получаю не 21, а 100 конечно (64 в hex)
а как перевести его в значение ‘d’?

Офлайн

#4 Ноя. 5, 2009 12:21:41

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

чтение и запись бинарного файла

chr(100)
обратно соответственно ord('d')



Отредактировано (Ноя. 5, 2009 12:22:42)

Офлайн

#5 Ноя. 5, 2009 20:48:21

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

чтение и запись бинарного файла

igor.kaist
chr(100)
обратно соответственно ord('d')
спасибо. пробовал
chr(100)
но чето с утра не работало. а щас все нормально. чудеса.
спасибо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version