Как мне отдельно преобразовать структуру timeval в две 32-битные переменные? - PullRequest
0 голосов
/ 15 октября 2010

Структура timeval имеет длину 64 бита.Для проекта мне нужно преобразовать это длинное (struct timeval) в два 32-битных блока и поместить каждый блок в свою переменную.Как мне это сделать?Спасибо заранее.

Ответы [ 4 ]

2 голосов
/ 15 октября 2010
uint32_t* values = &timevalstruct;

// depends on endianess

uint32_t v1 = values[0];
uint32_t v2 = values[1];
1 голос
/ 15 октября 2010

В дополнение к ответу леппи:

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 голосов
/ 15 октября 2010
struct timeval tv;
...
uint32_t seconds = tv.tv_sec;
uint32_t micros = tv.tv_usec;

Итак, разделены на 32-разрядные целые числа.

0 голосов
/ 15 октября 2010

См. Это: http://linux.die.net/man/2/gettimeofday

Можно ли использовать поля tv_sec и tv_usec структуры timeval?

...