Форум сайта python.su
Добрый вечер уважаемые !
Такая проблемма для реализации одного из алгоритмов шифрования необходимо побитово считать файл с диска ….
как это сделать ???
def read_file(path):
f = open(path,'rb');
file = f.read();
for x in file:
bin_mas = bin_mas + dec_in_bin(x)
f.close();
Офлайн
br3dЭто не так, считывание происходит если только так можно сказать в двоичной системе. Те на диске последовательность 0 и 1 и в памяти тоже. Двоичное, шестнадцатеричное, десятичное - эти понятия относятся к строке которая выводится на дисплей т.е. к форматированному условному представлению. Можно написать форматировщик вывода римскими цифрами или вообще палочками - как в первом классе числа представляли.
считывание происходит в десятичной системе
Офлайн
doza_andтоесть если полученный результат преобразования в бинарную систему я запишу в файл то он откроется как текст ????
Это не так, считывание происходит если только так можно сказать в двоичной системе. Те на диске последовательность 0 и 1 и в памяти тоже. Двоичное, шестнадцатеричное, десятичное - эти понятия относятся к строке которая выводится на дисплей т.е. к форматированному условному представлению. Можно написать форматировщик вывода римскими цифрами или вообще палочками - как в первом классе числа представляли
Офлайн
Это как в матрице “нет никакого текста” все эти данные - двоичные чилса
Файл откроется в редакторе, и там как и положено будут кракозябры. Нормальные такстовые редакторы позволяют просмотреть файл в hex или даже bin режиме.
то что вы хотите - форматирование чисел с использованием функции bin()
>>> bin(ord("a"))
'0b1100001'
>>> hex(ord("a"))
'0x61'
Отредактировано (Ноя. 13, 2011 17:37:52)
Офлайн
Это все понятно ! но дупустим у меня такая задача:
считать файл изменить первый бит записать обратно и открыть просмотрев результат… (т.е. какой из символов как изменится)
Офлайн
могу сразу сказать - изменится первый символ
Офлайн
да это все понятно ! я просто хотел увидеть код, ка кэто будет выглядеть !
Офлайн
with open("xxx","w") as fout:
fout.write("".join(map(lambda x:bin(ord(x)))[2:],open("fin","rb").read()))
Отредактировано (Ноя. 13, 2011 19:52:33)
Офлайн
br3dминимальная единица данных в файле - байт
Это все понятно ! но дупустим у меня такая задача:
считать файл изменить первый бит записать обратно и открыть просмотрев результат
br3dкод должен быть разреженным и понятным без всяких комментариев
да это все понятно ! я просто хотел увидеть код, ка кэто будет выглядеть !
Отредактировано (Ноя. 14, 2011 00:23:51)
Офлайн
Спасибо !!! помогли! только видимо мне не сильно подойдет это так как читать надо именно побитово …,
надо получить массив байт отредактировать его …, а потом опять записать в файл .., но так как разделители туда не воткнешь.., то придется придумывать что то другое…,(
Благодарю всех !
Офлайн