2017-01-29 6 views
0

buffers.hppのboost :: endianの例は、ネイティブフォーマットをビッグエンディアンまたはリトルエンディアンに変換する方法を示しています。ビッグ/リトルエンディアン形式を元の形式に戻すために逆関数を実行するにはどうすればよいですか?Howto: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:エラー:「ブースト::エンディアン:: big_uint64_buf_tを変換することはできません{別名後押し::エンディアン: :割り当て

v= b; 
^

にuint64_tを{別名長いunsigned int型} '「' のendian_buffer <(ブースト::エンディアン::順)0、長いunsigned int型、64ul>}同様のエラーがバック変換起こりますリトルエンディアン形式から。

答えて

0

用途:

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

値関数の使用は例から欠落しているが、それはメンバ関数のリストに記載されています。

関連する問題