• ベストアンサー

ファイルからビット単位での読み書き

手元に1MBのファイルがあります。 PCの内部ではこのファイル0,1で表現されていますよね? C言語でその1MBのファイルから01のデータを128ビットずつ読み込んできて処理したいのですが,何をどうやったらいいのか分かりません。 分かる方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

#1に加えての回答です。 読み込む領域は unsigned char ucBuffer[16]; という具合に、unsigned char の配列で定義します。そして各 ucBuffer[i] に対して各ビットに対するビット積を行い、その結果によってビット毎の処理を行います。たとえば、 int i,j; for ( i = 0; i < 16; i++ ) { for ( j = 7; j >=0; j-- ) { int nBit = ( ucBuffer & ( 1 << j ) ) ? 1 : 0 ; /******/ } } とし、コメント部分で nBit の値をもとに各ビットごとの処理を行えばいいのです。 #ただし、実際にはコメント部分では読み込みデータ→ビット値を格納する配列への変換のみを行い、実際の処理は上記の2重ループを抜けたところで行うべきです。

ichiro29
質問者

お礼

ありがとうございました。 無事解決しました。

その他の回答 (1)

noname#5537
noname#5537
回答No.1

fopen でファイルを開き(バイナリモードで), fread で 16 オクテット(128 ビット)ずつ読み込めばよいでしょう。

ichiro29
質問者

お礼

ありがとうございました。 無事解決しました。

関連するQ&A