是否可以从uint32读取s64值?

时间:2014-05-12 13:12:31

标签: c++ c types casting

代码:

s64 end_time;
struct timespec ts;
getrawmonotonic(&ts);
end_time = timespec_to_ns(&ts);

如何从end_time中删除前三个字节并从中删除最后一个字节?我想将它存储在uint32中。谁能告诉我怎么做?

uint32 latency;
fscanf(fp, "%lu\n", latency);  //fp  is reading the end_time and storing in latency.
latency = (uint32) (latency >> 8) & 0xFFFFFFFF;
从uint32读取s64值后

。我只读了4个字节。 是否可以从uint32读取s64?

1 个答案:

答案 0 :(得分:1)

这一行有很多错误:

fscanf(fp, "%lu\n", latency); 
  1. 应为&latency(您的版本是一个严重的逻辑错误)
  2. uint32 latency不一定是unsigned long
  3. 我假设您想要读取一个数字到您希望适合uint32的延迟?

    唯一可行的方法是使用ifstream。

    这是因为istream的运营商>>将为非标准uint32正确重载。

    这样做:

    std::ifstream myfile("file_containing_values.txt");
    uint32 latency;
    myfile >> latency;  // correct overload is selected by the compiler.