|
Модераторы: Daevaorn |
|
YahоО |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 198 Регистрация: 11.6.2015 Репутация: нет Всего: 1 |
Помогите понять отчего произвольную бин-строку нельзя преобразовать в привычный текст, например строку состоящую из одних единиц "11111111111111111111111" |
|||
|
||||
Oldshelf |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 160 Регистрация: 22.4.2018 Репутация: нет Всего: 4 |
Нашёл примеры похожего преобразования на PHP:
Тоже ничего дельного не выходит. Что-то на юникоде, вроде. Скорее всего, или нет подходящей кодировки или соответствующий шрифт не установлен. Ну и символов там может не быть, если мультибайтовая кодировка использует не весь диапазон доступных значений. А так должно быть в большинстве случаев: не может быть в разных языках одинаковое количество символов, совпадающее с максимальным значением байтов. В данном примере именно максимальные значения и получаются: единица в бинарном формате - наибольшая величина, а тут они идут подряд. Добавлено через 36 секунд + ссылка на пример кода: https://stackoverflow.com/questions/3553614...any-possibility |
|||
|
||||
YahоО |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 198 Регистрация: 11.6.2015 Репутация: нет Всего: 1 |
https://www.binaryhexconverter.com/binary-t...-text-converter нормально так преобразовывает "1111111111111111111111111111111111111111" в какие то символы, пусть они не очень читаемые но все же символы, что как бы и требовалось, почти.
Получается что все таки можно, хотя и не в python, или, что вероятнее, я просто не могу правильную универсальную функцию составить. Или "Для представления кодовых обозначений в виде байт, нужно как-то их закодировать." для строки из многих единичек не находится кода в кодировках. Это сообщение отредактировал(а) YahоО - 28.5.2023, 12:20 |
|||
|
||||
Oldshelf |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 160 Регистрация: 22.4.2018 Репутация: нет Всего: 4 |
Да, на PHP получился тот же результат - с невалидными символами. Думал, что в вопросе подразумевается тот же результат: вместо текста абракадабра. Если нет даже такого результата, то, видимо, функция просто получает ошибку... Кажется, по-умолчанию там установлен параметр 'strict', то есть должна появляться ошибка UnicodeEncodeError. Можно попробовать указать вторым параметром 'ignore':
Вообще, причина явно в том, что для данного набора байтов нет символов на utf8 и функция не может вернуть корректный результат. |
|||
|
||||
YahоО |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 198 Регистрация: 11.6.2015 Репутация: нет Всего: 1 |
нет символов на utf8 - так что не стоит пытаться найти то чего нет. (utf не бесконечен)
И это тоже хороший ответ, потому что в таком случае просто надо искать совершенно иное решение своих задач, не нуждающееся подобных преобразованиях и не натыкающееся на какие либо ограничения. Oldshelf, спасибо за участие в рассмотрении проблемы! |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |