如何:将 boost::endian 缓冲区类型转换回本机格式
Posted
技术标签:
【中文标题】如何:将 boost::endian 缓冲区类型转换回本机格式【英文标题】:Howto: convert boost::endian buffer types back into native format 【发布时间】:2017-01-29 00:18:55 【问题描述】: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: error: cannot convert 'boost::endian::big_uint64_buf_t aka boost::endian::endian_buffer ' 到 'uint64_t aka long unsigned int' 赋值
v= b;
^
从 little endian 格式转换回来时会发生类似错误。
【问题讨论】:
【参考方案1】:用途:
v= b.value(); // and/or
v= l.value();
虽然示例中缺少值函数的用法,但它记录在成员函数列表中。
【讨论】:
以上是关于如何:将 boost::endian 缓冲区类型转换回本机格式的主要内容,如果未能解决你的问题,请参考以下文章