Структура timeval имеет длину 64 бит. Мне нужно, для проекта, преобразовать этот длинный (struct timeval) в два 32-битных фрагмента и поместить каждый кусок в другую переменную. Как мне это сделать? Thanx заранее.Как отдельно преобразовать struct timeval в две 32-битные переменные?
0
A
ответ
2
uint32_t* values = &timevalstruct;
// depends on endianess
uint32_t v1 = values[0];
uint32_t v2 = values[1];
1
В дополнение к ответу leppie в:
union tvs
{
struct timeval tv;
struct ints {
uint32_t v1;
uint32_t v2;
};
};
tvs t;
t.tv = timevalstruct;
uint32_t v1 = tv.ints.v1;
uint32_t v2 = tv.ints.v2;
, если вы не хотите иметь дело с указателями.
0
Смотреть это: http://linux.die.net/man/2/gettimeofday
Вы можете использовать tv_sec и tv_usec полей в структуре формата: первый формат?
+0
Да, это то, что я только что решил сделать. Большое спасибо ребятам !! – dasen
0
struct timeval tv;
...
uint32_t seconds = tv.tv_sec;
uint32_t micros = tv.tv_usec;
Здесь вы идете, разделенные на 32-битные целые числа.
Можете ли вы использовать обычные члены 'tv_sec' и' tv_usec' (см. [Docs] (http://www.opengroup.org/onlinepubs/000095399/basedefs/sys/time.h.html))? –