■56321 / inTopicNo.3) |
Re[2]: バイナリファイルから文字列取得 |
□投稿者/ あや (2回)-(2011/01/10(Mon) 14:02:06)
|
■No56320 (Blue さん) に返信
ありがとうございます。
> 普通にReadChar で一文字ずつ読み込んで \0 が出たら終わりという風にしたらどうでしょうか? > > BinaryReader.ReadChar メソッド > http://msdn.microsoft.com/ja-jp/library/system.io.binaryreader.readchar%28v=vs.85%29.aspx > > ↓は適当 > System.Collections.Generic.List<char> l = new System.Collections.Generic.List<char>(); > while (true) > { > char c = br.ReadChar(); > if (c == '\0') { > break; > } > l.Add(c); > } > string s = new string(l.ToArray()); > こちら試してみます。
> バイナリファイルの構成を変えてもよいのであれば、文字列の前に文字数をUInt64(でなくてもよいけど)付加させたほうが > 読み込み安いかも。 書き込み形式を変えてみました。
構造体 struct Param { public long no; public long day; public long i; public string address; }
変数に数値格納 Param prm = new Param(); prm.no = 1; prm.day = 110101; prm.i = 4; prm.address = "abc\0";
ファイルに書き込み FileStream fS = new FileStream(file_name, FileMode.Append, FileAccess.Write); BinaryWriter sw = new BinaryWriter(fS); sw.Write(prm.no); sw.Write(prm.day); sw.Write(prm.i); sw.Write(prm.address);
これだと、"abc\0"は取得できませんでした。 プログラムの仕方が間違っていると思うのですが どこが違うのかわからないので 教えてください。
|
|