C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[12]: バイナリファイル出力


(過去ログ 63 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■36452 / inTopicNo.1)  バイナリファイル出力
  
□投稿者/ 初心者 (8回)-(2009/05/29(Fri) 09:42:40)

分類:[VB.NET/VB2005 以降] 

開発環境:VISTA
使用言語:Visual Studio 2008 VB.NET

いつもお世話になっております。
バイナリファイル出力についてご教授下さい。

下記のソースは、テキストの内容を16進数でテキストボックスに表示するものですが、
テキストボックスに入力された、値をテキストに16進数で表示したいのですが、どう考えてもわかりません。
このソースの逆の考えをすればいいと思うのですが、BinaryWriteの使い方がよくわかりません。

Dim FilePath As String = "C:\TEST.txt"
Dim DataFile As New System.IO.FileInfo(FilePath)
If DataFile.Exists AndAlso DataFile.Length > 0 Then
With New System.IO.BinaryReader(DataFile.OpenRead())
Me.TextBox1.Text = BitConverter.ToString(.ReadBytes(CInt(DataFile.Length)))
.Close()
End With
Else
Me.TextBox1.Clear()
End If
引用返信 編集キー/
■36453 / inTopicNo.2)  Re[1]: バイナリファイル出力
□投稿者/ επιστημη (1945回)-(2009/05/29(Fri) 09:46:14)
επιστημη さんの Web サイト
> テキストボックスに入力された、値をテキストに16進数で表示したいのですが、どう考えてもわかりません。

たとえばテキストボックスに"ABC"とあったとき、どんな結果を期待していますか?
"あいう"だったらどうですか?

引用返信 編集キー/
■36454 / inTopicNo.3)  Re[2]: バイナリファイル出力
□投稿者/ 初心者 (10回)-(2009/05/29(Fri) 09:52:25)
No36453 (επιστημη さん) に返信
> たとえばテキストボックスに"ABC"とあったとき、どんな結果を期待していますか?
> "あいう"だったらどうですか?

"ABC"  :41 42 43
"あいう" :82 A0 82 A2 82 A4 0D 0A
上記の結果が得られるようにしたいと考えています。
引用返信 編集キー/
■36455 / inTopicNo.4)  Re[1]: バイナリファイル出力
□投稿者/ 魔界の仮面弁士 (1107回)-(2009/05/29(Fri) 09:58:22)
2009/05/29(Fri) 10:02:25 編集(投稿者)
No36452 (初心者 さん) に返信
> 下記のソースは、テキストの内容を16進数でテキストボックスに表示するものですが、

これでも良いかな。

'Imports System.IO

If File.Exists(FilePath) Then
    TextBox1.Text = BitConverter.ToString(File.ReadAllBytes(FilePath))
Else
    TextBox1.Clear()
End If


> バイナリファイル出力についてご教授下さい。

"00-01-FF" などと書かれた TextBox1.Text の内容を、バイナリファイルに出力するのであれば、こんな感じで。

File.WriteAllBytes(OutputFilePath, Array.ConvertAll(Of String, Byte)(TextBox1.Text.Split("-"c), Function(s) Convert.ToByte(s, 16)))

引用返信 編集キー/
■36456 / inTopicNo.5)  Re[3]: バイナリファイル出力
□投稿者/ 魔界の仮面弁士 (1108回)-(2009/05/29(Fri) 10:12:05)
2009/05/29(Fri) 10:13:39 編集(投稿者)
No36454 (初心者 さん) に返信
> "ABC"  :41 42 43
> "あいう" :82 A0 82 A2 82 A4 0D 0A
> 上記の結果が得られるようにしたいと考えています。

ん…これは Shift_JIS? しかも後者は、「あいう」ではなく、「あいう{改行}」になっているような。

TextBox1 内の「あいう」を、TextBox2 に「82-A0-82-A2-82-A4」と
出力したいという意味なら、こうかな。「-」が邪魔ならさらに Replace すれば OK 。

Private Sub TextBox1_TextChanged() Handles TextBox1.TextChanged
 TextBox2.Text = BitConverter.ToString(System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(TextBox1.Text))
End Sub



そうではなく、TextBox1 内の「あいう」を、Shift_JIS ファイルとして出力したいという意味であれば、
 System.IO.File.WriteAllText(OutputFilePath, TextBox1.Text, System.Text.Encoding.GetEncoding("Shift_JIS"))
という感じで。

引用返信 編集キー/
■36457 / inTopicNo.6)  Re[4]: バイナリファイル出力
□投稿者/ 初心者 (11回)-(2009/05/29(Fri) 10:19:54)
No36456 (魔界の仮面弁士 さん) に返信
> そうではなく、TextBox1 内の「あいう」を、Shift_JIS ファイルとして出力したいという意味であれば、

TextBox1 内の「あいう」→テキスト(メモ帳等) 82 A0 82 A2 82 A4 0D 0A

上記のような出力結果が得られるようにしたいと考えています。
説明が下手で申し訳ありませんが、よろしくお願いします。

引用返信 編集キー/
■36459 / inTopicNo.7)  Re[5]: バイナリファイル出力
□投稿者/ 魔界の仮面弁士 (1110回)-(2009/05/29(Fri) 10:30:19)
No36457 (初心者 さん) に返信
> TextBox1 内の「あいう」→テキスト(メモ帳等) 82 A0 82 A2 82 A4 0D 0A

「あいう」なら、82 A0 82 A2 82 A4 のはずです。82 A0 82 A2 82 A4 0D 0A だと、
「あいう」ではなく、「あいう
」になってしまいます。

> 上記のような出力結果が得られるようにしたいと考えています。
こうかな。

Dim OutputFilePath As String = "C:\XYZ.TXT"
System.IO.File.WriteAllText(OutputFilePath, System.BitConverter.ToString(System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(TextBox1.Text)).Replace("-"c, " "c), System.Text.Encoding.GetEncoding("Shift_JIS"))
Process.Start("Notepad.exe", OutputFilePath)
引用返信 編集キー/
■36460 / inTopicNo.8)  Re[6]: バイナリファイル出力
□投稿者/ 初心者 (12回)-(2009/05/29(Fri) 10:58:43)
No36459 (魔界の仮面弁士 さん) に返信

ありがとうございます。希望通りの結果を得ることができました。

最後にひとつ質問なんですが「改行コード」は、どこに記述すればいいのでしょうか?


引用返信 編集キー/
■36461 / inTopicNo.9)  Re[7]: バイナリファイル出力
□投稿者/ よねKEN (337回)-(2009/05/29(Fri) 11:17:49)
> 最後にひとつ質問なんですが「改行コード」は、どこに記述すればいいのでしょうか?

どこに記述すればいいか?といういまひとつよくわからないのですが、

「あいう」に対して出力したいのは「82 A0 82 A2 82 A4」ではなく
「82 A0 82 A2 82 A4 0D 0A」だという話でしょうか?
それとも「あいう
」というのを変換元データにしたいという意味でしょうか?

後者ならTextBoxのMultilineプロパティをTrueにしておけば複数行入力ができますから、
テキストボックスでenterキーを押せばよいです。

引用返信 編集キー/
■36522 / inTopicNo.10)  Re[8]: バイナリファイル出力
□投稿者/ 素人 (14回)-(2009/05/30(Sat) 19:11:11)
テキストに出力した場合、改行されているようにしたいのですが、
どのようにすればいいのかわかりません。

どなたかご教授下さい。

Dim OutputFilePath As String = "C:\XYZ.TXT"
System.IO.File.WriteAllText(OutputFilePath, System.BitConverter.ToString(System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(TextBox1.Text)), System.Text.Encoding.GetEncoding("Shift_JIS"))
Process.Start("Notepad.exe", OutputFilePath)

引用返信 編集キー/
■36523 / inTopicNo.11)  Re[9]: バイナリファイル出力
□投稿者/ επιστημη (1946回)-(2009/05/30(Sat) 19:38:11)
επιστημη さんの Web サイト
...GetBytes(TextBox1.Text+"\r\n")... ではダメかしら

# ...あなたスレ主?

引用返信 編集キー/
■36569 / inTopicNo.12)  Re[10]: バイナリファイル出力
□投稿者/ 初心者 (13回)-(2009/06/01(Mon) 20:44:49)
バイナリデータをテキストファイルとして表示するにはどうしたらいいのでしょうか?
引用返信 編集キー/
■36573 / inTopicNo.13)  Re[11]: バイナリファイル出力
□投稿者/ すがり (31回)-(2009/06/02(Tue) 08:55:29)
No36569 (初心者 さん) に返信
> バイナリデータをテキストファイルとして表示するにはどうしたらいいのでしょうか?

今までの返信を見ていればほぼ解答が出ているのでは?
引用返信 編集キー/
■36593 / inTopicNo.14)  Re[12]: バイナリファイル出力
□投稿者/ 初心者 (17回)-(2009/06/02(Tue) 11:57:55)
皆様、ありがとうございました。
無事?解決しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -