1

一連のレコードを含むテキスト ファイルがあり、それを 1 と 0 として変換して保存しようとしています。使用するたびに

Byte [] arr=Encoding.UTF8.GetBytes(recordss) ;

バイトライターを使用して書き込みますが、同じレコードファイルに違いはありません。

だから私の質問は、文字列をバイナリに変換してバイナリ形式でファイルに書き込む方法があるということです。ちなみに私はc#を使っています

これまでの私のコードは次のとおりです

public static void serialData()
{
    FileStream recFile = new FileStream("Records.txt", FileMode.Open, FileAccess.ReadWrite);   //file to be used for records

    StreamReader recordRead = new StreamReader(recFile);

    String recordss = recordRead.ReadToEnd();        //Reads Record file

    recordRead.Close();
    recFile.Close();

    Byte [] arr=Encoding.UTF8.GetBytes(recordss) ;

    FileStream file = new FileStream("Temp.txt", FileMode.Create, FileAccess.Write);
    StreamWriter binfile = new StreamWriter(file);

    for(int i =0; i < arr.Count();i++)
        binfile.WriteLine(arr[i]);

    binfile.Close();
    file.Close();
}
4

2 に答える 2

0

結果は「バイト」形式です。いつも。定義上、それはデータです。それを「見る」方法は、それを開くために使用するソフトウェアによって異なります。

おそらく必要なのは、テキスト エディターで開いたときに、元のデータ ソースの基になるバイナリ データを「表示」するファイルです: as text。このためには、ファイルに文字 '0' と '1' を書き込む必要があります。したがって、最終的なファイルは元のデータ ソースよりもはるかに大きくなります。

このコードを変更します。

for(int i =0; i < arr.Count();i++)
    binfile.WriteLine(arr[i]);

これに:

foreach (byte b in arr)
{
    binfile.Write((b >> 7 & 1) == 0 ? '0' : '1');
    binfile.Write((b >> 6 & 1) == 0 ? '0' : '1');
    binfile.Write((b >> 5 & 1) == 0 ? '0' : '1');
    binfile.Write((b >> 4 & 1) == 0 ? '0' : '1');
    binfile.Write((b >> 3 & 1) == 0 ? '0' : '1');
    binfile.Write((b >> 2 & 1) == 0 ? '0' : '1');
    binfile.Write((b >> 1 & 1) == 0 ? '0' : '1');
    binfile.Write((b & 1) == 0 ? '0' : '1');
}

しかし、それはちょっと醜いです。16 進数のファイル ビューアーを使用することをお勧めします。

于 2013-04-25T10:51:27.990 に答える