0

A struct timeval is 64 bit long. I need, for a project, to convert this long (struct timeval) into two 32 bit chunks, and put each chunk into a different variable. How do I do this? Thanx in advance.

dasen
  • 1
  • 1
  • Can you use the normal `tv_sec` and `tv_usec` members (see [docs](http://www.opengroup.org/onlinepubs/000095399/basedefs/sys/time.h.html))? – Matthew Flaschen Oct 15 '10 at 11:19

4 Answers4

2
uint32_t* values = &timevalstruct;

// depends on endianess

uint32_t v1 = values[0];
uint32_t v2 = values[1];
leppie
  • 115,091
  • 17
  • 196
  • 297
1

As an addition to leppie's answer:

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;

if you dont want to deal with pointers.

nothrow
  • 15,882
  • 9
  • 57
  • 104
0

See this : http://linux.die.net/man/2/gettimeofday

Can you use tv_sec and tv_usec fields of the timeval structure?

BЈовић
  • 62,405
  • 41
  • 173
  • 273
0
struct timeval tv;
...
uint32_t seconds = tv.tv_sec;
uint32_t micros = tv.tv_usec;

There you go, separated into 32-bit integers.

Jonathan
  • 13,354
  • 4
  • 36
  • 32