Howto:将boost :: endian缓冲区类型转换回本机格式

时间:2017-01-29 00:18:56

标签: c++ boost

buffers.hpp的boost :: endian示例显示了如何将本机格式转换为大端或小端。如何执行反函数以将大/小端格式恢复为原生格式?

示例:

#include <stdint.h>
#include <boost/endian/buffers.hpp>

using namespace boost::endian;

int main() {
uint64_t v= uint64_t(0x1011121314151617);

big_uint64_buf_t    b;
little_uint64_buf_t l;

// Set values, implicit native_to_*
b= v;
l= v;

// Get values, does not work
v= b;
v= l;

return 0;
}

gcc编译器抱怨:

example.cpp:17:6:错误:无法转换'boost :: endian :: big_uint64_buf_t {aka boost :: endian :: endian_buffer&lt;(boost :: endian :: order)0,long unsigned int,64ul&gt;在赋值中''到'uint64_t {aka long unsigned int}'

 v= b;
  ^

从小端格式转换回来时会发生类似的错误。

1 个答案:

答案 0 :(得分:0)

使用:

v= b.value(); // and/or
v= l.value();

虽然示例中缺少值函数用法,但会在成员函数列表中记录。