ビットフィールドとエンディアンで問題が発生しました...混乱しました。
ネットワークから取得したデータを解析する必要があります。送信されたデータはリル エンディアンです (boost::asio を使用しています)。
これについて説明してもらえますか
struct TEST
{
unsigned short _last : 1;
unsigned short _ID : 6;
unsigned short _LENGH : 9;
};
struct TEST2
{
unsigned short _LENGH:9 ;
unsigned short _ID:6 ;
unsigned short _last:1 ;
};
int main(int argc, char* argv[])
{
printf("Hello World!\n");
TEST one;
one._ID = 0;
one._last = 0;
one._LENGH = 2; //the value affected here is always divided by 2, it is multiplied by 2 when i cast a short to this structure
TEST2 two;
two._ID = 0;
two._last = 0;
two._LENGH = 2; //the value here is well stored
bit_print((char*)&one,2);
bit_print((char*)&two,2);
return 0;
}
[出力]
00000000 00000001
00000010 00000000