0

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

4

4 回答 4

2
uint32_t* values = &timevalstruct;

// depends on endianess

uint32_t v1 = values[0];
uint32_t v2 = values[1];
于 2010-10-15T11:15:34.133 回答
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;

如果你不想处理指针。

于 2010-10-15T11:18:25.117 回答
0
struct timeval tv;
...
uint32_t seconds = tv.tv_sec;
uint32_t micros = tv.tv_usec;

你去吧,分成 32 位整数。

于 2010-10-15T17:34:46.157 回答
0

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

可以使用 timeval 结构的 tv_sec 和 tv_usec 字段吗?

于 2010-10-15T11:19:53.050 回答