- 1 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:07:56 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/
- 166 名前:やおい [2007/09/10(月) 23:49:58 ]
- typedef unsigned long dword;
typedef unsigned char byte; typedef union _struct{ byte data[12]; struct test_bit{ dword program_info_length :12; dword flag_4 :4; dword PCR :13; dword flag_3 :3; dword last_section_number :8; dword section_number :8; dword current_next_indicator:1; dword version_:5; dword flag_11:2; dword program_number :16; dword section_length:12; dword falg_2_ :2; dword flag_0:1; dword testdata :1; dword table_id :8; }bit; }header_type;
- 167 名前:やおい mailto:sage [2007/09/10(月) 23:50:47 ]
-
上記のようなビットフィールド構造を作ってdata配列に値を入れて共用体のメンバから 欲しいビット値を手に入れると言ったプログラムを作ってます。 上記の様に定義してprintfで出力し一つ一つ確認を行ったところ dword program_number以降に入るデータが期待する値と違うものが入ってしまいます。 共用体で切った容量と、構造体で切った配列は同じ大きさだと思うのですが・・・何故こんな 事が起こるのかわかりません・・・。 ちなみに dword program_number :16;の部分を >dword program_number1 :8; >dword program_number2 :8; で二つに分けるとprogram_number以降も正しくデータが入りました。 原因が分かる方が居ましたら是非、お願いします。
|

|