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;
^
从小端格式转换回来时会发生类似的错误。
答案 0 :(得分:0)
使用:
v= b.value(); // and/or
v= l.value();
虽然示例中缺少值函数用法,但会在成员函数列表中记录。