- 締切済み
一定のバイト列から指定サイズのビットを取り出す。
C初心者です。 VC7であるプログラムを作成しているのですが、 以下の処理の記述方法がわからずに困ってます。 ・一定のバイト列(128byte以上のサイズ)から103bitだけ取り出したい。 ポイントは取り出したい指定ビットサイズが8bit区切りでない ことなんですが、何か良い方法はないでしょうか?
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
回答No.6
ビットフィールドは現在の処理系でも扱えますが(というか標準規格でサポートされていますが)、対応可能なのは原則として int 型のサイズまでです。したがって、103ビットのビットフィールドというのは無理です。それに、ビットフィールドが期待通りのビットオーダーになっているかは分かりませんので、それについても要調査ということになります。
- Quant
- ベストアンサー率18% (23/122)
回答No.5
ビットフィールドを使えばいいのでは。今の処理系では使えないんですかね。 最近はプログラムを組むことがないので、新しい方法があるのかどうかわかりませんが、昔は、ビット操作をするときはビットフィールドを指定して使っていました。
- jacta
- ベストアンサー率26% (845/3158)
回答No.4
ビットオーダーをどう考えるかをまず決めましょう。 バイト中のビットのうち、上位ビットを前とするのか、後とするのかを決めないことには先に進みません。 1バイトのビット数はCHAR_BITマクロで分かりますので、8と決め打たなくても済みます。
- RAPTsong
- ベストアンサー率42% (74/175)
回答No.3
1byte == 8bit だと仮定できるとき、 int( 103 / 8 ) byte だけ先に取り出す。 次に、( 103 % 8 ) bit を取り出す。 ってな感じでしょうか。
- tatsu99
- ベストアンサー率52% (391/751)
回答No.2
どういう風に取り出したいのか例を示して下さい。それが判ると、良い回答が得られると思います。
- acombun
- ベストアンサー率16% (16/99)
回答No.1
どこからどう取出したいのかわかりませんが、ANDとシフトを使ってみてください。