- 1
- 2
- 3
- 4
- 5
QByteArray ba;
char x;
x = 0x05;
ba.append (&x, sizeof (x));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+55
QByteArray ba;
char x;
x = 0x05;
ba.append (&x, sizeof (x));
Qt. Продолжаем мучить QByteArray :)
Dummy00001 27.11.2014 00:19 # +1
Xom94ok 27.11.2014 07:14 # +1
someone 27.11.2014 08:17 # +2
bormand 27.11.2014 08:34 # 0
someone 27.11.2014 08:37 # +2
roman-kashitsyn 27.11.2014 08:50 # +1
someone 27.11.2014 08:51 # 0
roman-kashitsyn 27.11.2014 08:53 # +2
Но сама книжка годная, да и сишка там скорее как превдокод.
Анонимус 27.11.2014 13:03 # 0
'это как?
люди кучей не пользуются?
defecate-plusplus 27.11.2014 13:15 # +2
в куче темно и сыро
а в стеке светло, тепло и сухо
TarasB 27.11.2014 13:37 # 0
Анонимус 27.11.2014 11:58 # 0
bormand 27.11.2014 13:57 # 0
Анонимус 27.11.2014 15:11 # 0
Dummy00001 27.11.2014 10:56 # 0
вы так жалуетесь, как если бы никогда STL не пользовались. те же грабли, вид с боку.
ваши жалобы говорят что вам на Java пересаживатся надо: наличие утилит и синтакс шугар вас "путает".
Xom94ok 27.11.2014 11:27 # 0
Лучше бы у QByteArray был метод append, принимающий const void * и размер. Так и писать проще - не нужен каст к const char *, и компилятор при попытке аппенда структуры не найдет подходящей перегрузки и ругнется.
> STL <...> те же грабли, вид с боку
Вот про STL даже не подумал, вспомнив в первую очередь write/fwrite и boost::asio::buffer, у которых нет проблем с логичностью типов аргументов.
roman-kashitsyn 27.11.2014 11:34 # 0
Но зачем аппендить структуры в байтовый буфер? Какой вообще в этом толк? Там же паддинг и мусор, для чего он?
Кмк, логично ограничить вход байтами (char) и заставлять людей делать явную сериализацию.
Xom94ok 27.11.2014 11:49 # 0
В моей скромной практике осталось только одно место, в котором это требуется: работа с двоичными протоколами. К некоторым протоколам соседние отделы прикладывают заголовки с плотно упакованными структурами и считать структуру одним разом всё-таки удобнее, чем читать каждое поле по отдельности.
> Кмк, логично ограничить вход байтами (char) и заставлять людей делать явную сериализацию.
Ага, поди, заставь закоренелого сишника с 20+ годами практики читать или писать XML, будет потом как в gk#17139 на одних sprintf :)
roman-kashitsyn 27.11.2014 11:53 # +1
> считать структуру одним разом всё-таки удобнее, чем читать каждое поле по отдельности
Но ведь byte order...
Xom94ok 27.11.2014 12:09 # 0
Эх. Даже писать об этом не хочется, ибо ожидаю, что полетят в меня какашки.
В нашей конторе порядок байт всегда был фиксирован на little endian. В скором времени это ограничение может быть внезапно снято с расширением на другие архитектуры и тогда придется покупать на работу кофе-машину и ведёрко вазелина...
roman-kashitsyn 27.11.2014 12:14 # 0
> ожидаю, что полетят в меня какашки
Удивительно, но такой подход является скорее правилом, нежели исключением. Сам работал в компании, где за 10 лет работы продукта никто по этому поводу даже не думал, хотя продукт был полностью построен на бинарных сетевых протоколах.
> придется покупать на работу кофе-машину
У вас нет на работе кофе-машины? Срочно купите.
Анонимус 27.11.2014 12:28 # 0
roman-kashitsyn 27.11.2014 12:33 # 0
>> Удивительно
Когда мне впервые пришлось столкнуться с сериализацией в бинарный файл (а ведь это ещё даже не сеть), я сразу узнал про порядки байт и навелосипедил свой буфер для сериализации.
Видимо, большинство людей просто не изучает проблему перед тем, как начать реализацию.
Пообещай менеджеру всё сделать за неделю @ напиши первое, что пришло в голову
roman-kashitsyn 27.11.2014 12:42 # 0
Кстати, вот первые версии
http://govnokod.ru/12465
wvxvw 27.11.2014 17:32 # 0
bormand 27.11.2014 17:37 # 0
Ну они же не думали, что их когда-нибудь придется открывать...
P.S. А открыли ли?
wvxvw 27.11.2014 20:47 # +2
Самые плохие, правда, это ПСД и ФЛА, вот в ФЛА там как раз встречаются разные индейцы, говорят, что в ПСД - тоже.
Что хуже всего, это даже проистекает не от нежелания, а изза бюрократии. Когда Адоб решил сплавить Апачу Флекс, то поняли, что в потрохах куча всего, что открыть тяжело (или стремно). Шейдеры так и остались проприетарными, даже АПИ стандартной библиотеки (сами заголовки) не отркыли (хотя они естесственно находятся в свободном доступе). Кодек для шрифтов - тоже не открыли и т.д.
bormand 27.11.2014 13:58 # 0
ealx 27.11.2014 12:29 # 0