Найти - Пользователи
Полная версия: побитовое чтение
Начало » Python для новичков » побитовое чтение
1 2
br3d
Добрый вечер уважаемые !
Такая проблемма для реализации одного из алгоритмов шифрования необходимо побитово считать файл с диска ….
как это сделать ???

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();
пока реализовал так…, но все равно считывание происходит в десятичной системе, а потом приходится преобразовывать в двоичную …,
doza_and
br3d
считывание происходит в десятичной системе
Это не так, считывание происходит если только так можно сказать в двоичной системе. Те на диске последовательность 0 и 1 и в памяти тоже. Двоичное, шестнадцатеричное, десятичное - эти понятия относятся к строке которая выводится на дисплей т.е. к форматированному условному представлению. Можно написать форматировщик вывода римскими цифрами или вообще палочками - как в первом классе числа представляли.
br3d
doza_and
Это не так, считывание происходит если только так можно сказать в двоичной системе. Те на диске последовательность 0 и 1 и в памяти тоже. Двоичное, шестнадцатеричное, десятичное - эти понятия относятся к строке которая выводится на дисплей т.е. к форматированному условному представлению. Можно написать форматировщик вывода римскими цифрами или вообще палочками - как в первом классе числа представляли
тоесть если полученный результат преобразования в бинарную систему я запишу в файл то он откроется как текст ????
помоему не откроется, для этого что то еще надо сделать мне кажется….
doza_and
Это как в матрице “нет никакого текста” все эти данные - двоичные чилса
Файл откроется в редакторе, и там как и положено будут кракозябры. Нормальные такстовые редакторы позволяют просмотреть файл в hex или даже bin режиме.
то что вы хотите - форматирование чисел с использованием функции bin()
>>> bin(ord("a"))
'0b1100001'
>>> hex(ord("a"))
'0x61'
но повторюсь - текстовые редакторы это тоже умеют.
br3d
Это все понятно ! но дупустим у меня такая задача:
считать файл изменить первый бит записать обратно и открыть просмотрев результат… (т.е. какой из символов как изменится)
doza_and
могу сразу сказать - изменится первый символ
br3d
да это все понятно ! я просто хотел увидеть код, ка кэто будет выглядеть !
doza_and
with open("xxx","w") as fout:
fout.write("".join(map(lambda x:bin(ord(x)))[2:],open("fin","rb").read()))
не ручаюсь, но похоже так
Сие произведение надо назвать както так:
преобразование содержимого файла в строку, содержащую букву “1” в той позиции где были единичные биты и букву “0” в той позиции где были нулевые биты с последующей записью этой строки в файл.
py.user.next
br3d
Это все понятно ! но дупустим у меня такая задача:
считать файл изменить первый бит записать обратно и открыть просмотрев результат
минимальная единица данных в файле - байт
поэтому, чтобы поменять какой-нибудь бит в файле, нужно достать соответствующий байт, поменять в нём нужный бит и записать этот байт обратно
при этом байт должен оказаться на том же месте, где и был

br3d
да это все понятно ! я просто хотел увидеть код, ка кэто будет выглядеть !
код должен быть разреженным и понятным без всяких комментариев
выполни import this и прочитай там правила
br3d
Спасибо !!! помогли! только видимо мне не сильно подойдет это так как читать надо именно побитово …,
надо получить массив байт отредактировать его …, а потом опять записать в файл .., но так как разделители туда не воткнешь.., то придется придумывать что то другое…,(

Благодарю всех !
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB