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.
Asked
Active
Viewed 1,796 times
4 Answers
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