Найти - Пользователи
Полная версия: Открыть txt файл в бинарном виде.
Начало » Python для новичков » Открыть txt файл в бинарном виде.
1 2
PEHDOM
doza_and
При помощи простого open вы не доберетесь до физической поверхности диска, с его головками дорожками секторами…
а шо open('/dev/sda','rb') из под рута уже не работает(в венде от админа ‘\\.\PhysicalDriveN’)?
Только что проверил, все работает. Это не дорожки-сектора, но вполне себе сырые данные. Можно MBR, например, считать (или запороть )
xam1816
Jun
у этой области есть начало и есть конец и от начала до конца, это набор битов.
откройте свой текстовый файл в Hex редакторе и посмотрите на эту область,где от начала до конца будет текст в шестнадцатеричном виде,можно отобразить в 0 и 1.На сколько я понимаю,данные которые записываются при записи этого файла на жесткий диск или на флешку,где указываются имя,характеристики файла,разрешения,какие-нибудь координаты,где располагается область непосредственно с данными.находится не в той же области.Это как в книге есть оглавление в начале,а есть сам текст,на некой странице.Поправьте,если чего не так говорю
PEHDOM
xam1816
Это как в книге есть оглавление в начале,а есть сам текст,на некой странице.Поправьте,если чего не так говорю
Если в целом и общем то да, хотя бывают исключения и вобщем все зависит от реализации конкретной ФС. например в NTFS можно иметь файл нулевой длинны(и в НЕХ редакторе вы увидите что файл пустой), при стирании которого освободится 1 Гбайт свободного места. Потомучто стандартными средствами можно увидеть только основной текст поток, а гигабайт ктоото запихнул в дополнительный, а доп. потоки из “оглавления” не видно.

py.user.next
Генератор для преобразования потока байтов в поток битов.
  
>>> def to_bits(seq):
...     for byte in seq:
...         for i in range(1, 8 + 1):
...             yield (byte >> (8 - i)) & 1
... 
>>> list(to_bits(b'abcde'))
[0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1]
>>>
Дальше в него подаёшь то, что из файла прочитал в бинарном режиме.
Jun
Rodegast
Вот так?
Если это весь файл целиком, то да, то есть что бы можно было взять этот набор бит, перенести его на другой ПК и собрать из него обратно тот же файл.

doza_and
Буфера операционной системы буфер устройства ввода вывода, raid контроллеры, контроллер переназначения секторов и т.п. и .т.д.
Здесь, наверное, нет необходимости так глубоко погружаться, может быть действительно, мы можем просто получить доступ к файлу так как это делает Hex редактор?

xam1816
можно отобразить в 0 и 1
Как мы могли бы сами реализовать подобное, прочить эти биты все целиком как в Hex редакторе, в любом виде например в шестнадцатеричном и преобразовать их в 01?
xam1816
Jun
Как мы могли бы сами реализовать подобное, прочить эти биты все целиком как в Hex редакторе, в любом виде например в шестнадцатеричном и преобразовать их в 01?

 def text_bin(text):
	s = ''.join(format(ord(c), '016b') for c in text)
	return s
def bin_text(bin_str):
	chars_bin = wrap(bin_str, 16)
	chars_dec = [int(s,2) for s in chars_bin]
	s = ''.join(map(chr, chars_dec))
	return s
s1 = text_bin("привет")
print(s1)
s2 = bin_text(s1)
print(s2)

вывод
 000001000011111100000100010000000000010000111000000001000011001000000100001101010000010001000010
привет
Process finished with exit code 0

по 16 символов чтобы русские буквы влазили
Jun
xam1816
по 16 символов чтобы русские буквы влазили
Спасибо большое за пример и объяснения.
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