Я написал код (приведенный в конце поста), который просто преобразует байты файла (= byte_obj
) в двоичное число binary_dt
, поэтому я ожидаю, что число битов в byte_obj
и binary_dt
будет таким же, но это не так, я использовал текстовый файл 3 КБ и получил выходной файл размером 17 КБ (output = запись binary_dt
в текстовый файл), почему это так?
Обратите внимание, что число байтовых объектов в byte_obj
файла равно 2117, а размер byte_obj
(с накладными расходами на фактическое содержимое из-за данных структуры) равен 2150, поэтому здесь нет большой разницы ..
Итак, что не так, может кто-нибудь объяснить, пожалуйста? и что мне делать, если я хочу получить одинаковое количество бит от binary_dt
и byte_obj
?
import sys
input_file="a.txt";output_file="b.txt"
with open(input_file, "rb") as file: #--> open file in binary read mode
byte_obj = file.read() #--> read all binary data
print("Number of byte-object in 'byte_obj' = ",len(byte_obj))
print("The size of 'byte_obj' (has an overhead over the actual content, due to structure data) = \n",str(sys.getsizeof( byte_obj))) #Return the size of an object in bytes.
binary_dt=bin(int.from_bytes( byte_obj, byteorder=sys.byteorder))
print("The number of bits in 'binary_dt' on PC= \n",len(binary_dt)) #Return the size of an object in bytes.
print("binary_dt: \n",binary_dt)
text_file = open(output_file, "w")
n = text_file.write(binary_dt)
text_file.close()