MAGIC_NUM;
uint8_t *b = &a;
printf("%d", b[5]);
уб, или нет? Интересуют стандарты С99 и С11
не UB, если uint8_t это 1 байт, но вывод на разных архитектурах может быть разный
Character type это и char, и unsigned char?
ой, мозг нарисовал мне 64 бита как 4 байта, извините
используйте unsigned char вместо uint8_t, и стандарт гарантирует вам точно то, что вы и хотите без UB
да, но скорее всего ваша реализация просто указывает на unsigned char: typedef unsigned char uint8_t;
Отлично, спасибо!
Только endianness может быть разным, и поэтому побайтовый просмотр объектов может дать разный ответ. Код же с битовой маской даст гарантированный ответ вне зависимости от endianness
А как часто такое встречается?
В смысле, как часто встречаются little-endian/big-endian?
unsigned char это 1 байт
Ну просто все что я видел ток на одном сидят, хз
значит на одной архитектуре сидят)
Та у меня что ток в руках не было, но везде одно и тоже
А че не на дишке
Да мне надо байтики перекладывать, си проще в этом плане
А в ручную можно? Там щипцами?
Я не настолько ещё упоролся по оптимизации... Но да, пока прототип на Си, а релизная версия будет на асме
Цо ти пишешь
Может будет смешно звучать, но хочу попробовать свой алгоритм шифрования придумать (уже) и реализовывать (ещё не доделал). Оно в наше время конечно уже очень сложно сделать что то конкурентноспособое, ведь уже есть и сальса, и аес, и чача, и множество других... Но ведь, с другой стороны, не боги горшки лепили, правда?
Обсуждают сегодня