プロが教える店舗&オフィスのセキュリティ対策術

C#でテキストデータの内容を読み込みbinファイルに書き込むプログラムを作成したいと思っています
DialogResult d = of.ShowDialog();でテキストのパスを取得し(d)
System.IO.FileStream fil = new System.IO.FileStream( @"z:\test.bin",System.IO.FileMode.Create, System.IO.FileAccess.Write);で書き込むbinファイルを新規作成(上書き)しています
テキストデータは16進数で記入してありますがバイナリモードでの書き込みを教えてください。
できれば、プログラムの工程の説明もお願いします。

「C#について」の質問画像

質問者からの補足コメント

  • そのサイトを参考に組んでみたのですがバイナリーの文字列のほうに出力されてしまいました。
    文字列ではないほうの出力方法をお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/12/18 17:17
  • そうです

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/12/19 12:13
  • 画像では見にくかったですね。
    画像左の文字のほうに書き込んでしまうため左のバイナリのほうに書き込めるようにしたいと思っています。テキストから文字データを読み込み .binのファイルに書き込みたいです。宜しくお願いします

    「C#について」の補足画像3
    No.3の回答に寄せられた補足コメントです。 補足日時:2018/12/20 11:30
  • private void button1_Click(object sender, EventArgs e)
    OpenFileDialog of = new OpenFileDialog();
    DialogResult d = of.ShowDialog();
    if (d == DialogResult.OK)
    string file = of.FileName;
    textBox1.Text += file;
    FileStream fs = new FileStream(file,FileMode.Open,FileAccess.Read, FileShare.None);
    BinaryReader br = new BinaryReader(fs);
    System.IO.FileStream fil = new System.IO.FileStream

      補足日時:2018/12/20 11:35

A 回答 (5件)

うん。


余計判らなくなりましたな。

というか、ファイルについての貴方の理解が解らない。

>画像左の文字のほうに
一般的なバイナリエディタなら、その左側に16進数で表記されているのがファイルの内容です。
右側になんか見えるのは、ファイルの各1バイトを対応するASCIIコードの文字を表示しているだけで、『ファイル内の別の内容』ではありません。

ちなみにテキストファイルと言っているのも人間側の都合なだけで、OSからしたらバイナリデータの塊に過ぎません。
# その前提の上ですが、所謂テキストファイルを読み込むのにBinaryReaderクラスは使いません。
    • good
    • 0

>画像左の文字のほうに書き込んでしまうため左のバイナリのほうに書き込めるようにしたいと思っています


??

よけい混乱しましたが
先に返事していた通り
ffという文字を読込んで66, 66
というバイナリデータではなく
FFというバイナリデータにしたいということでしたら

https://dobon.net/vb/dotnet/programing/converthe …
このページのようにテキストデータを1バイトの整数に変換してから
ファイルに書き込めばいいと思います
    • good
    • 0

コードを画像で貼るんじゃなくて、テキストで貼って欲しいところですけどね…。




>DialogResult d = of.ShowDialog();でテキストのパスを取得し(d)

OpenFileDialogクラスで取得…ですよね?

>C#でテキストデータの内容を読み込みbinファイルに書き込むプログラムを作成したいと思っています

StreamReaderで入力のテキストファイルをオープンして、
StreamReader.ReadLine()で1行読み込み。
読み込んだ文字列をByte.Parse()で「16進数文字列から数値」に変換し、FileStream.WriteByte()で書き出す。
ってのを繰り返していけばいいんじゃないですか?
Byte.Parse()の結果をByte[]の配列に格納していって、最後にFileStream.Write()で書き込む…でもいいでしょうけど。
# Byte[]のサイズが確定できるなら。


テキストファイルをBinaryReader経由にする必要性がまったく不明ですが。
BinaryReader.ReadChar()で1文字ずつ改行まで読み込んで…とか、
「1行読み込む」のに手間を掛けたいのであれば問題ありませんけども。
# StreamReader.ReadLine()で読み込んだ方が楽ですけどね。
# 車輪の再発明は時と場合によってはいいんじゃないでしょうか。
この回答への補足あり
    • good
    • 0

>バイナリーの文字列のほうに出力されてしまいました。


ごめんなさい、言っている意味が分かりません
バイナリーはバイナリーだし、文字列は文字列です

最終的に出力したいのは
FF, AA, 99, 00, 54 ~...
というバイナリファイルということですか?
この回答への補足あり
    • good
    • 0
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!