Тот же код в python3 .6 создает файл большего размера, чем python2 .7. Преобразование bin в ASCII - PullRequest
0 голосов
/ 28 мая 2020

Может ли кто-нибудь помочь мне понять, почему при запуске под Python2 файл, созданный этим кодом, намного меньше (и ожидаемый размер файла), чем в Python3?

binary_str="00110111011010110101......"

num_bytes = int(len(binary_str)/8)

with open('output', 'w') as f:
    output_str = ""
    for i in range(num_bytes):
        output_str += chr(int(binary_str[i:i+8],2))
    f.write(output_str)
    f.close()

binary_str - это 1330 байт длинная строка. В Python2 .7 этот код создает файл размером 1330 байт, содержащий соответствующие данные ascii. При запуске с python3 .6 воздушных шаров размером до 1974 байтов. Почему такая разница в поведении?

1 Ответ

2 голосов
/ 28 мая 2020

Вероятно, вы создаете символы, отличные от указанных в 7-битном ascii. Поскольку python 3.x соответствует Unicode, кодирование символов за пределами 7-битной кодовой таблицы ascii кодируется с использованием нескольких байтов.

Самый известный метод кодирования символов Unicode - utf-8 . Широко распространен. В этом стандарте один символ мог быть закодирован с использованием до 4 байтов.

Так что неудивительно, когда ваш файл увеличивается при использовании python 3.x

даже очень вероятно, что вы получите другой контент помимо другого размера файла с python 3.x по сравнению с python 2.x

Чтобы быть действительно уверенным, что я пишу здесь, было бы лучше, если бы вы опубликуйте свою полную исходную битовую строку для преобразования. Так что мне придется это проверить.

Кстати. python Поддержка 2.x прекращена с начала этого 2020 года. См. Прекращение поддержки ...

...