Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Результаты опроса: Бинарные файлы (объекты сериализации) устарели?
1) Только текст 2 18.18%
2) Только бинарка 0 0%
42 (пояснить в посте) 9 81.82%
Голосовавшие: 11. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 30.06.2012, 02:50   #16
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Бинарные файлы

надуманные проблемы совместимости обойти просто - достаточно их игнорировать

little-endian почти везде
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (30.06.2012)
Старый 30.06.2012, 02:55   #17
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от Mr_F_ Посмотреть сообщение
а где вообще конкретно такие проблемы с совместимостью встречались?
Что касается структур: http://xydan.livejournal.com/3344.html
На счёт переменных, честно говоря на практике сталкивался только при парсинге одного формата данных (нет гарантии, что числа выворачивались там с каким-то умыслом). Поэтому, не могу 100% гарантировать, а лишь предполагаю и опасаюсь (вспоминая сокеты и htonl/ntohl), что эффект имеет место быть.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:58   #18
jimon
 
Сообщений: n/a
Ответ: Бинарные файлы

Сообщение от impersonalis Посмотреть сообщение
вот специально для таких хитрых я и написал длинное вступление. Спасибо, конечно, за философское уточнение, ещё можно рассказать, что все данные это 0 и 1, а потом спустится ещё ниже - к непрерывным аналоговым сигналам... по теме же - ни слова
хм ? тебя интересует теоретическая сторона ? уже всё сказано
если же интересует практическая сторона но хочешь услышать "технически подкованный ответ который хоть в квн вставляй", так вот, количество букв в алфавите бинарных данных - 255, в ASCII - 127 скажем, те запись в текстовом виде всегда будет требовать больше байт чем в бинарном, а возможность "читать файл в блокноте" довольно спорна если это данные от программы для программ
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (30.06.2012)
Старый 30.06.2012, 03:12   #19
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от jimon Посмотреть сообщение
хм ? тебя интересует теоретическая сторона ? уже всё сказано
если же интересует практическая сторона но хочешь услышать "технически подкованный ответ который хоть в квн вставляй", так вот, количество букв в алфавите бинарных данных - 255, в ASCII - 127 скажем, те запись в текстовом виде всегда будет требовать больше байт чем в бинарном, а возможность "читать файл в блокноте" довольно спорна если это данные от программы для программ
Вероятно, пример с блокнотом всё испортил - каждый 2-ой отписавшийся почему-то рассматривает довод о возможности правки данных в текстовом процессоре.
Меня же более всего волнуют [потенциальные] проблемы переносимости.
Далее: в бинарном алфавите (раз уж мы обратились к теории передачи информации) - 256 символов. 7-битная аськи, канеш справедливо, но подразумевалась более привычная 8-битная, расширенная региональной таблицей. 256=256.
В бинарном виде записывается весь контейнер (напоминаю - речь о числах), а не только значащие биты, т.о. текстовое представление будет эффективней бинарного для всех случаев (см. первый пост):
sizeof(type)>floor(logX(number))+1, где Х - принятая для отображения с\с
для случая int VS 10-base числа от 0 до 999, т.к.
4>floor(2.9...)+1
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 03:26   #20
jimon
 
Сообщений: n/a
Ответ: Бинарные файлы

impersonalis
так если у тебя число от 0 до 999 то зачем тебе писать его в 4 байта ? хватит 2 байт (short : от 0 до 65535), 2 байта меньше 3 байт необходимых для записи 999
 
Ответить с цитированием
Старый 30.06.2012, 04:07   #21
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Бинарные файлы

Сообщение от Mr_F_ Посмотреть сообщение
а где вообще конкретно такие проблемы с совместимостью встречались?
Уже не актуально, но..
Borland Delphi 7
Скомпилил на 98 винде, перенёс на 2K,XP - получи кракозябры
Скомпилил на 2K,XP, перенёс на 98 - текст не отображается в принципе

Blitz3D тоже показал, что всё с русским не так уж и хорошо. Народ патчил ОС, патчил финальную exe, выносил текст из сорсов (ну это имхо всегда надо делать) и даже полностью заменял блицевский текст на свою реализацию. Таки решили, да.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Online)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (30.06.2012)
Старый 30.06.2012, 12:56   #22
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Всем отписавшимся - большое спасибо: помогли выработать более объективный взгляд на ситуацию!
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 13:42   #23
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Бинарные файлы

Для шлифовки баланса геймплея - само собой только текст, сейвы в бинарке.
Но так как 95% файлов в тексте, то ответил только текст....возможно в будующем полностью на текст перейду, так удобней.
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 22:58   #24
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Бинарные файлы

Имею для C# свою бинарную сохранялку со структурой типа бинарного JSON и возможностью кодировать кастомные классы (делал для сокращения размера передаваемых данных по сети). Но когда надо использую XML/JSON/TEXT
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 13:16   #25
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Бинарные файлы

Сообщение от impersonalis Посмотреть сообщение
Получается, что бинарные файлы - это хак. Его переносимость весьма условна.
В то же время, используя текстовый формат
Просьба сильно не пинать, если где-то заблуждаюсь
ну вот как тебя после этого не сильно грызть?
если у бинарного формата четко определен именно... формат, то никаких проблем с его чтением не существует.
есть функции преобразования big endian в little endian и наоборот.
просто сохранять кусок памяти конечно не годится.
но плотно упакованные структуры (без паддинга) лишнюю память не расходуют.

размышления про число 999 уже обсудил jimon.
кстати, "число", а по сути у тебя будет строка, нужно его сконвертировать с число.
так что такой подход не наш метод.
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 14:18   #26
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от ffinder Посмотреть сообщение
есть функции преобразования big endian в little endian и наоборот.
просто сохранять кусок памяти конечно не годится.
но плотно упакованные структуры (без паддинга) лишнюю память не расходуют.
об этом речь и шла - всё остальное, домыслы, вызванные, вероятно, моей некачественной формулировкой проблемы.
И главное из этого резюме: как реализовать (например, на цпп) грамотное сохранение (например double) в бинарном формате, в том числе - как реализовать код таким образом, чтобы он сам "понимал" необходимо ли использовать преобразование считанного.

Сообщение от ffinder Посмотреть сообщение
но плотно упакованные структуры (без паддинга) лишнюю память не расходуют.
Об этом тоже упоминалось в моих постах.
Тут даже важнее (в рамках проблемы) следующее: представление на разных компиляторах (и настройках) различаются, и потому если не убирать выравнивания то тупо переслать кусок памяти между программами не удастся.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 14:45   #27
jimon
 
Сообщений: n/a
Ответ: Бинарные файлы

Сообщение от impersonalis Посмотреть сообщение
представление на разных компиляторах (и настройках) различаются, и потому если не убирать выравнивания то тупо переслать кусок памяти между программами не удастся.
у каждого компилятора есть свой ABI (Application Binary Interface), иногда он задаётся самим языком, а иногда не задаётся так вот в C и C++ он не определяется стандартами, отсюда твои проблемы ?

ps. если да, то советую глянуть как у нас устроен вызов функций - везде юзается какое нибудь заранее обговоренное соглашение о вызове ( stdcall и прочие : http://en.wikipedia.org/wiki/X86_calling_conventions ), собственно если вызывающий код (например в другой библиотеке) не знает о соглашении то ничего не получится, вот так же делается и с структурами - надо кидать структуры между программами с разным ABI напрямую ? обговаривай соглашение и всё, зачастую выравнивание на 4 обговорить и хватит, самое сложное - это указатель на метод, он везде разный размер имеет (от 8 до 20 байт)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (01.07.2012)
Старый 01.07.2012, 15:04   #28
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от jimon Посмотреть сообщение
у каждого компилятора есть свой ABI (Application Binary Interface), иногда он задаётся самим языком, а иногда не задаётся так вот в C и C++ он не определяется стандартами, отсюда твои проблемы ?

ps. если да, то советую глянуть как у нас устроен вызов функций - везде юзается какое нибудь заранее обговоренное соглашение о вызове ( stdcall и прочие : http://en.wikipedia.org/wiki/X86_calling_conventions ), собственно если вызывающий код (например в другой библиотеке) не знает о соглашении то ничего не получится, вот так же делается и с структурами - надо кидать структуры между программами с разным ABI напрямую ? обговаривай соглашение и всё, зачастую выравнивание на 4 обговорить и хватит, самое сложное - это указатель на метод, он везде разный размер имеет (от 8 до 20 байт)
УРА! именно это я и хотел услышать! В следующий раз буду задавать вопрос менее обтекаемо. Собственно, я это уже выжал из треда (хотя если б не тупил и задал вопрос нормально - то получил ответ сразу же ).
И именно поэтому я рассуждал о костыле в виде текстового представления.
p.s.: да проблемы с соглашением вызова как-то были - тема была изучена в необходимом объёме

Теперь просветите: насколько непопулярны системы с big-endian? Стоит ли опасаться непереносимости сохранённых чисел?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 15:29   #29
jimon
 
Сообщений: n/a
Ответ: Бинарные файлы

Сообщение от impersonalis Посмотреть сообщение
УРА! именно это я и хотел услышать! В следующий раз буду задавать вопрос менее обтекаемо. Собственно, я это уже выжал из треда (хотя если б не тупил и задал вопрос нормально - то получил ответ сразу же ).
И именно поэтому я рассуждал о костыле в виде текстового представления.
p.s.: да проблемы с соглашением вызова как-то были - тема была изучена в необходимом объёме

Теперь просветите: насколько непопулярны системы с big-endian? Стоит ли опасаться непереносимости сохранённых чисел?
если тебе не надо писать под PowerPC, SPARC и MIPS, то забей
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (01.07.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:31.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com