• 締切済み

一定のバイト列から指定サイズのビットを取り出す。

C初心者です。 VC7であるプログラムを作成しているのですが、 以下の処理の記述方法がわからずに困ってます。 ・一定のバイト列(128byte以上のサイズ)から103bitだけ取り出したい。 ポイントは取り出したい指定ビットサイズが8bit区切りでない ことなんですが、何か良い方法はないでしょうか?

みんなの回答

  • 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とシフトを使ってみてください。

関連するQ&A