C#、.netでファイルにビット(バイトではない)を書き込む方法は?私はそれに執着している。
編集:私はちょうどバイトビットをファイルに書き込む方法は?
4
A
答えて
6
一度に書き込むことができるデータの最小量は1バイトです。
個々のビット値を書き込む必要がある場合。 (例えば、1ビットフラグ、3ビット整数及び4ビット整数を必要とするバイナリフォーマットのように)。書き込むバイト全体があるときは、個々の値をメモリにバッファリングしてファイルに書き込む必要があります。 (パフォーマンスのために、より多くのファイルをバッファリングし、より大きなチャンクをファイルに書き込むことは理にかなっています)。
0
として、すべての8ビットを書き込むあなたは個人だけではない、一度に1つのバイトを書き込むことができますよう、bitshiftsまたはバイナリ算術を使用する必要があります別の方法を探していますビット。
4
- ビットを追加する場合は、バッファを左シフトし、最も低い位置用いOR に新しいビットを入れ
- (単一バイトが「バッファ」としての資格を得る)バッファ内のビットを蓄積
- バッファがいっぱいになったら、ファイルに追加してください。
0
私はこのようにしてBitsWriterをエミュレートしました。
private BitArray bitBuffer = new BitArray(new byte[65536]);
private int bitCount = 0;
// Write one int. In my code, this is a byte
public void write(int b)
{
BitArray bA = new BitArray((byte)b);
int[] pattern = new int[8];
writeBitArray(bA);
}
// Write one bit. In my code, this is a binary value, and the amount of times
public void write(int b, int len)
{
int[] pattern = new int[len];
BitArray bA = new BitArray(len);
for (int i = 0; i < len; i++)
{
bA.Set(i, (b == 1));
}
writeBitArray(bA);
}
private void writeBitArray(BitArray bA)
{
for (int i = 0; i < bA.Length; i++)
{
bitBuffer.Set(bitCount + i, bA[i]);
bitCount++;
}
if (bitCount % 8 == 0)
{
BitArray bitBufferWithLength = new BitArray(new byte[bitCount/8]);
byte[] res = new byte[bitBuffer.Count/8];
for (int i = 0; i < bitCount; i++)
{
bitBufferWithLength.Set(i, (bitBuffer[i]));
}
bitBuffer.CopyTo(res, 0);
bitCount = 0;
base.BaseStream.Write(res, 0, res.Length);
}
}
関連する問題
- 1. ビットをファイルに書き込む
- 2. OCamlファイルに書き込む方法は?
- 3. ローカルドキュメントライブラリにファイルを書き込む方法
- 4. リンクリストオブジェクトをファイルに書き込む方法
- 5. Cで8ビットのデータをマクロで書き込む方法は?
- 6. C++のWindowsレジストリに32ビットD-Wordを書き込む方法
- 7. C#でファイルに書き込む方法
- 8. データベースにビット値を書き込む
- 9. Modbus PLCにコイル(ビット)を書き込む
- 10. 辞書を.pyファイルに書き込む方法は?
- 11. 特定のビット数のJavaでintを書き込む方法
- 12. ファイルに8ビットのビットセットを書き込む(C++)
- 13. ファイルを別のファイルに書き込む方法は?
- 14. ISOファイルのアクセントをXMLファイルに書き込む方法は?
- 15. 大きなファイルをSQL Server FILESTREAMに書き込む方法は?
- 16. .dataファイルから.txtファイルに書き込む方法Javaでは?
- 17. ファイルから(ビット単位で)読み込み、再度ファイルに書き込む
- 18. 128MBをアトミックにファイルに書き込む方法は?
- 19. pdfファイルを読み込んでoutputStreamに書き込む方法
- 20. 辞書(コレクション)オブジェクトをファイルに書き込む方法(VB .Net 2010)
- 21. STAXを使ってxmlにファイルを書き込む方法は?
- 22. 同じパッケージにファイルを書き込む方法は?
- 23. System.Collections.Specialized.StringCollectionの内容をファイルに書き込む方法は?
- 24. Pythonでファイルにユニコードオブジェクトを書き込む方法は?
- 25. ビットセットデータをファイルに書き込む方法は?
- 26. PythonのtxtファイルにASCII文字を書き込む方法は?
- 27. UDパイプタガーの出力をファイルに書き込む方法は?
- 28. エリキシル中のRAMにファイルを書き込む方法は?
- 29. ファイルの単語を配列に書き込む方法は?
- 30. Mavenを使ってxmlファイルに書き込む方法は?
残念ながら、これは私が期待したものです。私はちょうど8で分割しないビットの数を書くことで問題を避けたいと思ったが、私はそれを処理する必要があります – agnieszka