
Square
10.04.2016
12:57:32

KrivdaTheTriewe
10.04.2016
12:57:50
а не
сча

Google

Square
10.04.2016
12:58:38

Alex Фэils?︙
10.04.2016
12:59:02

KrivdaTheTriewe
10.04.2016
12:59:15

Alex Фэils?︙
10.04.2016
12:59:26

KrivdaTheTriewe
10.04.2016
12:59:35
Но я не знаю как представляется bool

Alex Фэils?︙
10.04.2016
13:01:01
uint32_t *val = BIT_VAL(dbg_lastbit, 1, 31) | BIT_VAL(dbg_sz, 31, 1);
?

KrivdaTheTriewe
10.04.2016
13:02:39
короч я бы так не делал

Alex Фэils?︙
10.04.2016
13:03:03
В итоге математика тупая: dbg_sz * (flag ? -1: 1)

KrivdaTheTriewe
10.04.2016
13:03:37
откажись от була
вообще

Google

Square
10.04.2016
13:04:11
а чо вы сделать то хотите?

Alex Фэils?︙
10.04.2016
13:04:35
Блин. Напоролся на херню с битовымиьполями в Си
Пришлось битовые операции юзать
Было так:
struct PathSzBot {
uint32_t val:31;
uint32_t flag: 1;
}
PathSzBit *z = (PathSzBit *)&out_paths.buf[off];
bool dbg_lastbit = (cur_path.size() % 2) != 0; uint32_t dbg_sz = get_size_for_one_path(p.at(i).path.size()); // 31 бит по факту!
z->lastbit = dbg_lastbit;
z->sz = dbg_sz;
bool dbg2_lastbit = z->lastbit;
uint32_t dbg_sz2 = z->sz;
assert(dbg_sz2 == dbg_sz);
assert(dbg_lastbit == dbg2_lastbit); // тут пиздец
А итоге решил тупо юзать знаковые числа?
Это похоже на баг в компиляторе
Он асм код неверный делает, я вот ща смотрю(


KrivdaTheTriewe
10.04.2016
13:05:35
я не понимаю что ты хочешь сделать, но это выглядит страшно

Alex Фэils?︙
10.04.2016
13:05:49
Ща поясню

KrivdaTheTriewe
10.04.2016
13:05:52
а еще ты бул используешь не для true false

Stanislav
10.04.2016
13:05:53
я вот тоже по коду не понял что делается)

Alex Фэils?︙
10.04.2016
13:06:10
У меня есть несжатая структура

KrivdaTheTriewe
10.04.2016
13:06:11
я вижу что интовой переменной присваивается значение бул
которое хрен знает какое при приведении типа

Alex Фэils?︙
10.04.2016
13:06:40

KrivdaTheTriewe
10.04.2016
13:06:53
нет

Google

KrivdaTheTriewe
10.04.2016
13:07:18
в сях 0 это false , а все остальное включая -1 -1488 это true
есть спецификация на bool

Alex Фэils?︙
10.04.2016
13:07:37
там жестко 1
у меня прописывается

KrivdaTheTriewe
10.04.2016
13:07:50
нет, смотри
у тебя идет следущее
bool a = (bool) 1;
что происходит при приведении типа хз
читай доку на комп

Alex Фэils?︙
10.04.2016
13:08:20
хм..
по ходу, да, каст

KrivdaTheTriewe
10.04.2016
13:08:32
может ты и прав

Alex Фэils?︙
10.04.2016
13:08:33
лан, ща я напишу, что надо сделать

KrivdaTheTriewe
10.04.2016
13:09:17
но идеологически bool a = (bool) 1; может привести к тому что у тебя по адрессу a будет лежать значение 1488

Alex Фэils?︙
10.04.2016
13:09:35
в общем, вот задача:
Есть приходящая структура несжатых данных по 8 байт. В этих 8 байтах два енама по 4 байта. У всех енамов диапазон значений умещается в [0;7].

KrivdaTheTriewe
10.04.2016
13:10:00
там типа хрен знает сколько он занимает байт реально по стандарту

Alex Фэils?︙
10.04.2016
13:10:21
enum class uint32_t
C++11
Так. Дальше..

Google

Alex Фэils?︙
10.04.2016
13:10:34
2. Надо 8 байт сжать в 1 байт. Делаем! 4 верхних бита - одно значение из массива, 4 нижних - второе.
в сжатом потоке сначала хранится размер сжатых данных в формате struct {
uint32_t count :31;
uint32_t flag :1; // показывает ,что в последнем байте у нас верхние 4 бита не используются
}
мне надо записать заголовок, но при записи неверно получается

KrivdaTheTriewe
10.04.2016
13:12:55
блин

Alex Фэils?︙
10.04.2016
13:13:16
лан, я отойду, с планшета буду

KrivdaTheTriewe
10.04.2016
13:13:28
смотри что можно сделать
struct f_u { a char[8]; }
приводи к ней указатель на твою структуру и обращайся нормально как с байтами
зачем тебе сжимать что то
и показывать что какие то биты не используются

Admin
ERROR: S client not available

KrivdaTheTriewe
10.04.2016
13:14:58
у тебя же все одноозначно
что в структуре два енама

Square
10.04.2016
13:16:54
меня уже в сон лепит, но проверь чтоб у тебя не было никаких оптимизаций.
я помню как то сращивал дллку на делфи и плюсовый код, долго вдуплял в чем бида. а оказалось на том конце packed record была
я реально в этой лапше потерялся из твоего кода

Alex Фэils?︙
10.04.2016
13:18:23
Заголовок неверно соьирается
В общем, я им скажу, чтоб другой заголовок был
uint32_t count;
,и все

Google

Alex Фэils?︙
10.04.2016
13:19:47
По каунту сайз легко читается
Лан, ок, спс всем)
В пзду программирование в 5 утра после трех дней без сна
В общем, вот тест на компилятор:
struct fuck {
uint32_t val:31;
uint32_t flag:1;
};
struct fuck fuck;
memset(&fuck, sizeof(fuck), 0);
uint32_t flag = 1;
uint32_t val = 2;
fuck.val = val;
fuck.flag = flag;
uint32_t v3 = fuck.val;
uint32_t f2 = fuck.flag;
assert(v3 == val);
assert(flag == f2);
В этом коде как раз ошибка с установлением полей была

Square
10.04.2016
13:27:17
#mindfuck

Alex Фэils?︙
10.04.2016
13:27:19
И всякие були и пр не при чем

Square
10.04.2016
13:27:33
Это я для себя тег поставил - потом вернусь)

Alex Фэils?︙
10.04.2016
13:27:41
??
Собственно, речь об этом была. А я чет от бессонных ночей очень херово выразил суть проблемы

Square
10.04.2016
13:28:43
А ты где живёшь что у тебя пять утра?

Alex Фэils?︙
10.04.2016
13:32:59
Не, я код писал этот в пять утра
Сегодня начал проверять
Куча ночных ассертов попадали?

Square
10.04.2016
13:35:13
Блеа. Ад. Я думал я один такие портянки рожаю что потом неделю разгребаю
В порой смотришь на чужой код и диву даёшься как у людей все так круто
Для меня эталон кода - moodycamel::concurrentqueue
Приятно смотреть

Ned Ogl
10.04.2016
13:43:01

Square
10.04.2016
13:43:46

Alex Фэils?︙
10.04.2016
14:20:38
У меня есть две категории проекто: мои и дедлайнв
И они разительно в коде отличаются