Господа, объясните плиз мне, темному... где грабли? в упор не вижу. вот есть такой код: GSQL_DEBUG ("format parsed: %s", dt_format_parsed); GSQL_DEBUG ("DateTime: %llu", dt->dt); GSQL_DEBUG ("shift: [%d] value[%llu] mask[%d] value [%d]", dt_ms[0].shift, dt->dt >> dt_ms[0].shift, dt_ms[0].mask, dt->dt >> dt_ms[0].shift & (dt_ms[0].mask)); GSQL_DEBUG ("shift: [%d] value[%llu] mask[%d] value [%d]", dt_ms[1].shift, dt->dt >> dt_ms[1].shift, dt_ms[1].mask, (dt->dt >> dt_ms[1].shift) & dt_ms[1].mask); GSQL_DEBUG ("shift: [%d] value[%llu] mask[%d] value [%d]", dt_ms[2].shift, dt->dt >> dt_ms[2].shift, dt_ms[2].mask, (dt->dt >> dt_ms[2].shift) & dt_ms[2].mask); GSQL_DEBUG ("shift: [%d] value[%llu] mask[%d] value [%d]", dt_ms[3].shift, dt->dt >> dt_ms[3].shift, dt_ms[3].mask, (dt->dt >> dt_ms[3].shift) & dt_ms[3].mask); GSQL_DEBUG ("shift: [%d] value[%llu] mask[%d] value [%d]", dt_ms[4].shift, dt->dt >> dt_ms[4].shift, dt_ms[4].mask, (dt->dt >> dt_ms[4].shift) & dt_ms[4].mask); GSQL_DEBUG ("shift: [%d] value[%llu] mask[%d] value [%d]", dt_ms[5].shift, dt->dt >> dt_ms[5].shift, dt_ms[5].mask, (dt->dt >> dt_ms[5].shift) & dt_ms[5].mask); f_tmp = g_strdup_printf (dt_format_parsed, (dt->dt >> dt_ms[0].shift) & dt_ms[0].mask, (dt->dt >> dt_ms[1].shift) & dt_ms[1].mask, (dt->dt >> dt_ms[2].shift) & dt_ms[2].mask, (dt->dt >> dt_ms[3].shift) & dt_ms[3].mask, (dt->dt >> dt_ms[4].shift) & dt_ms[4].mask, (dt->dt >> dt_ms[5].shift) & dt_ms[5].mask); GSQL_DEBUG ("f_tmp: %s", f_tmp); а вот его выхлоп: ** (lt-gsql:11477): DEBUG: format parsed: %02d/%02d/%d %02d:%02d:%02d ** (lt-gsql:11477): DEBUG: DateTime: 13200622476056071035 ** (lt-gsql:11477): DEBUG: shift: [18] value[50356378463959] mask[63] value [0] ** (lt-gsql:11477): DEBUG: shift: [24] value[786818413499] mask[15] value [0] ** (lt-gsql:11477): DEBUG: shift: [28] value[49176150843] mask[65535] value [0] ** (lt-gsql:11477): DEBUG: shift: [12] value[3222808221693376] mask[63] value [0] ** (lt-gsql:11477): DEBUG: shift: [6] value[206259726188376109] mask[63] value [0] ** (lt-gsql:11477): DEBUG: shift: [0] value[13200622476056071035] mask[63] value [0] ** (lt-gsql:11477): DEBUG: f_tmp: 23/00/11 00:33595:00 есть 3 вопроса: намба раз - почему value [0], т.е. значение = 0? намба два - при все при этом, этот же сдвиг и наложение маски в f_tmp кладут цифры отличные от ноля? намба три - в каком месте я наступил на грабли? зыЖ dt - есть такой тип: union _GSQLTypeDateTime { struct { guint sec:6; guint min:6; guint hour:6; guint day:6; guint mon:4; guint year:16; GSQLTypeDateTime_type dt_type:2; guint _align64:18; } datetime; guint64 dt; }; в эту структуру заложил вот такую дату: test.datetime.year = 2099; test.datetime.mon = 11; test.datetime.day = 23; test.datetime.hour = 0; test.datetime.min = 45; test.datetime.sec = 59;
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум битовый сдвиг (2012)
- Форум Побитовый сдвиг (2013)
- Форум сдвиг влево (2022)
- Форум Сдвиг экрана (2006)
- Форум Про сдвиг... (2005)
- Форум Сдвиг континиума (2006)
- Форум Конфликт сдвига/вывода (2016)
- Форум Сдвиг в zsh (2013)
- Форум cacti: сдвиг графиков (2014)
- Форум NTP со сдвигом (2020)