如何将struct timeval分别转换为两个32位变量?

时间:2010-10-15 11:13:28

标签: c timeval

struct timeval是64位长。对于一个项目,我需要将这个long(struct timeval)转换为两个32位块,并将每个块放入一个不同的变量中。我该怎么做呢? 提前完成。

4 个答案:

答案 0 :(得分:2)

uint32_t* values = &timevalstruct;

// depends on endianess

uint32_t v1 = values[0];
uint32_t v2 = values[1];

答案 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;

如果你不想处理指针。

答案 2 :(得分:0)

看到这个: http://linux.die.net/man/2/gettimeofday

你能使用timeval结构的tv_sec和tv_usec字段吗?

答案 3 :(得分:0)

struct timeval tv;
...
uint32_t seconds = tv.tv_sec;
uint32_t micros = tv.tv_usec;

你去了,分成32位整数。