2010-10-15 2 views
0

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

+0

Можете ли вы использовать обычные члены 'tv_sec' и' tv_usec' (см. [Docs] (http://www.opengroup.org/onlinepubs/000095399/basedefs/sys/time.h.html))? –

ответ

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-битные целые числа.

 Смежные вопросы

  • Нет связанных вопросов^_^