@ProCxx

Страница 65 из 2477
Square
10.04.2016
12:57:32
У меня была идея вот как
там есть битхаки чтоб получить знак

KrivdaTheTriewe
10.04.2016
12:57:50
а не

сча

там есть битхаки чтоб получить знак
естть кростплатформенная библиотека макрсов для работы с битами

Google
KrivdaTheTriewe
10.04.2016
12:59:15
это вопрос?
не , не вопрос

Alex Фэils?︙
10.04.2016
12:59:26
#define BIT_VAL(val, mask, off) (((val)&(mask))<<(off))
А вот такой вариант можно еще так сделать:

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);

Но я не знаю как представляется bool
На самом деле там полный бздец. В отладчике меняешь значение sz в той биовой структуре, и меняется еще и флаг тот!

?

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
struct f_u { a char[8]; }
С самими енамвми все понятно

Заголовок неверно соьирается

В общем, я им скажу, чтоб другой заголовок был

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
Блеа. Ад. Я думал я один такие портянки рожаю что потом неделю разгребаю
Согласен, из-за цейнтнота такой треш получается

У меня есть две категории проекто: мои и дедлайнв

И они разительно в коде отличаются

Страница 65 из 2477