アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして、今回分からない点があり投稿させていただきました。
http://www.vector.co.jp/soft/win95/util/se079072 …

上記ののバイナリエディタの機能の一つにある
『指定した文字列』を『任意の文字列』に置換する方法を教えていただけませんか?

私が出来てる部分は、ファイルを16進数で読み込み置換するまです。

これをファイルとして出力する方法がわかりません。
ご教授お願いします。

A 回答 (4件)

>最後に質問なんですが、このプログラムは、上、中、下


>で言うとどれくらいのレベルですか?

バイナリデータを扱うという点では「中」くらいですね。

ファイル操作については、普通はまずテキストデータを扱うところから始めます。メモ帳等で開いて自分で簡単に中身を確認できますからね。
で、.NETなら本当はここで文字コードについて理解が必要になってきますんで。
    • good
    • 0
この回答へのお礼

ありがとうございました。

文字コードについて学習して、もう少し知識をつけてから挑戦したいと思います。

では失礼します。

お礼日時:2005/03/24 20:27

>音声ファイルを16進数でとりこみ、元ファイルの形式に戻すには、どのようにもどしたらよいのですか?



戻すも何も、読み込んだバイト配列の内容を自分で変更して書き込むだけですけど。


>これも文字コードの設定で可能なのでしょうか?

というか、文字コードについて勉強しましょうね。
文字コードをちゃんと理解しないでバイナリファイルを文字にして表示なんてのは危険すぎます。

半角英数だけで、Unicode以外の文字コードにするんでしたらSJISもJISもEUCもどれも一緒です。
    • good
    • 0
この回答へのお礼

まだまだ理解できません。
VB始めたばかりというかプログラミングを始めたばかりなのですみません。

もう少し基礎を勉強してから頑張ります。
色々教えて頂きありがとうございます。

最後に質問なんですが、このプログラムは、上、中、下
で言うとどれくらいのレベルですか?

お礼日時:2005/03/24 19:54

>こんなソースで書いたのですが、これは全然違いますか?



ファイルの入出力は、こんな感じでいいかと思いますけど、読み込んだ内容をどこも置換しないで保存してもしょうがないですよね(^^;;;

#あとは、コメントが怪しいですが(^^;;


で、メインの置換の部分ですが、
BitConverter.ToString()で文字列にした結果との比較はやめた方がいいかと。ずれる可能性大です。

なので、「指定した文字列」の方もバイト配列に変換してください。

http://dobon.net/vb/dotnet/string/getencoding.html
ポイントとして、.NETでは文字列はUnicodeとして扱われます。なので、『指定した文字列』というのも、どの文字コードで指定するかということが重要になります。

#といってもEncoding.GetEncoding()のパラメータかえるだけですけどね。

比較は、配列なんですからループで出来ますよね。

この回答への補足

返事遅れてすみません。

音声ファイルを16進数でとりこみ、元ファイルの形式に戻すには、どのようにもどしたらよいのですか?

置換方法は例えば『0100FFDO』を『00235121』に書き直して元の音声ファイルとして出力したいのです。

これも文字コードの設定で可能なのでしょうか?
また可能ならどの文字コードで出力したらよいのでしょうか?

説明下手くそですみません。

補足日時:2005/03/24 17:01
    • good
    • 0

>『指定した文字列』を『任意の文字列』に置換する方法を教えていただけませんか?



1.『指定した文字列』1文字ずつ切り出し、文字コードにしてをByte型配列に格納。

2.読み込んだファイルの内容と、1で作成した配列の先頭の値を比較し、同じだったら配列の残りの部分も同じかどうか比較する。違ったら読み込んだファイルの比較開始位置をずらす。

3.置換対象個所が見つかったら、『任意の文字列』を1.と同様に1文字ずつ切り出し、文字コードにしてをByte型配列に格納。


>私が出来てる部分は、ファイルを16進数で読み込み置換するまです。

あとは出来ますよね。

この回答への補足

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fsIn As New System.IO.FileStream(fileName, _
System.IO.FileMode.Open, System.IO.FileAccess.Read)
'すべて読み込む
Dim bytesIn(fsIn.Length - 1) As Byte
fsIn.Read(bytesIn, 0, bytesIn.Length)
'閉じる
fsIn.Close()
'ファイルを書き出す
Dim fsOut As New System.IO.FileStream(fileName, _
System.IO.FileMode.Create, System.IO.FileAccess.Write)
'復号化されたデータを書き出す
fsOut.Write(bytesIn, 0, bytesIn.Length)
'閉じる
fsOut.Close()

'16進数で格納
data1 = BitConverter.ToString(bytesIn).Replace("-", "")

'リッチテキストに出力
RichTextBox1.Text = data1
Dim kensaku, kekka As String
kensaku = RichTextBox1.Text
kekka = kensaku.Replace(TextBox2.Text, "00007D0000007D00")
End Sub


こんなソースで書いたのですが、これは全然違いますか?

補足日時:2005/03/23 12:27
    • good
    • 0

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