0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 27
|
||||||
1 | ||||||
Как правильно сохранять шестнадцатеричный код?13.12.2015, 12:06. Показов 1381. Ответов 8
Метки нет (Все метки)
Здравствуйте! Очень прошу помощи!
Я открываю в моей программе картинку и получаю ее 16-ый код в текстовом поле. Подскажите пожалуйста как правильно сохранить 16-ый код из этого поля, чтобы на выходе получилась та самая картинка. У меня файл сохраняется, но не открывается, пишет неверный формат файла. Вот как я сохраняю:
Заранее огромное спасибо за помощь!
0
|
13.12.2015, 12:06 | |
Ответы с готовыми решениями:
8
Как шестнадцатеричный код перевести в код символа Как зашифровать шестнадцатеричный код? Как правильно сохранять настройки? Как правильно сохранять такие строки |
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
|
|
13.12.2015, 13:35 | 2 |
Сравни размеры файлов.
0
|
0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 27
|
|
13.12.2015, 13:44 [ТС] | 3 |
Digit@ll, я сравнивал, сохраняемый в проге больше выходит. На всякий случай вот картинка: imgdisk.ru/images/2015/12/13/circle.png, а вот 16 код из моей программы: rghost.ru/private/7g59FWyWy/11c361d718838b810908b1f337f3a42f
0
|
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
|
|
13.12.2015, 13:56 | 4 |
У тебя совершенно два разных файла и это же видно сразу. Открой их и сравни. Данные в txt идут из космоса.
0
|
0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 27
|
|
13.12.2015, 14:06 [ТС] | 5 |
Digit@ll, у меня исходная картинка в bmp, это из-за хостинга картинок. вот скрин из программы: https://www.cyberforum.ru/atta... 1450004551
Правилен ли вообще код сохранения? Потому что если я пробую моей программой открыть *.txt файл, а потом сохранить его как файл *.bin, то открыв этот бинарный файл блокнотом, я вижу сохраненный 16 код
0
|
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
|
|
13.12.2015, 15:38 | 6 |
В файле, который вы создаете программой, и указанным кодом - не двоичный код картинки. А результат преобразования двоичного кода в "читаемое представление". То есть в поле редактирования вы шестнадцатиричный код записываете в виде последовательностей, состоящих из пар ASCII-символов и пробелов.
А вам нужно перед записью в файл снова преобразовать ваш "читаемый" формат в двоичный. То есть вам нужно перед сохранением пробежаться по вашему тексту, и каждую встреченную пару ASCII-симвлов - преобразовать в одно единственное char-значение (с помощью самописной функции, или подобной strtol), сложить его в буфер, этот буфер записать в файл.
1
|
0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 27
|
||||||
13.12.2015, 15:49 [ТС] | 7 | |||||
Dreamer_0x01, спасибо большое за ответ, уже понял свою ошибку.
Сделал так:
0
|
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
|
|
13.12.2015, 17:10 | 8 |
Сообщение было отмечено mak95 как решение
Решение
Если у вас в поле редактирования случайно нарушится порядок (например, пользователь вставит лишний символ), то комбинация конструкции вида "i=i+2" и sscanf приведет к непредсказуемым результатам, как правило ведущим к падению программы.
Функцию scanf и ей подобные вообще нужно использовать с большой осторожностью, так как подсовывание им данных "не по формату" запросто приводит к выходам за границы буфера данных, который она заполняет. Лучше все-таки использовать функции, либо принимающие максимальный размер буфера, либо функции, уже возвращающие результ в числовом виде, типа atoi, strtol и т.д.
1
|
0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 27
|
|
13.12.2015, 17:21 [ТС] | 9 |
Спасибо большое за инфу!) Поправлю
0
|
13.12.2015, 17:21 | |
13.12.2015, 17:21 | |
Помогаю со студенческими работами здесь
9
Как правильно сохранять результат работы Как правильно сохранять текст в textarea в БД Как правильно сохранять/восстанавливать данные из Bundle Как правильно сохранять файлы на сервере. Spring MVC Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |