1

どのサイズがバイト数を表すかを使用して、バイナリファイルをバイト単位で読み取ることができますが、ビット単位で読み取るにはどうすればよいですか? (必要に応じてバイトまたはオクテットの 1/8)f:read(size)

ほとんどのデータ Int8(1),Uint16(2),Uint32(4),Int*(4) では問題ありませんが、BOOL(0.125 ?) では問題ありません。

ご協力いただきありがとうございます !

編集:私の問題は明らかに、ファイルをビットごとに読み取るのではなく、ブール値を含むすべてのデータを抽出することです(1ビットの「シフト」を作成せずに)。

4

1 に答える 1

1

できません。バイトは、ファイルから読み取ることができる最小単位です。バイト単位のアクセスをラップしてビット単位に見えるようにするコードを書くことができます。

ファイルからブール値を読み取る適切な方法は、その書き込み方法によって異なります。ブール値を少しずつ書き込むのとまったく同じようなトラブルに遭遇しない限り、そのように読み取る必要はありません。

Lua ファイル API は、数値と文字列のみを扱います。ブール値を書き込むには、これらの型のいずれかに変換します。それを読み取るには、これらの型のいずれかを読み取り、書き込みに使用した変換の逆を実行します。たとえば、 と に変換true1falseから0、数値を読み書きすることができます。または、複数のブール値を 1 つの数値にまとめようとする場合もあります。いずれにせよ、ブールデータを読み書きするために、ファイルをビット単位で読み書きする必要はありません。

于 2012-09-05T17:04:40.853 に答える