DOBON.NET DOBON.NETプログラミング掲示板過去ログ

バイナリデータ

  • 題名: バイナリデータ
  • 著者: ken
  • 日時: 2005/03/16 21:00:59
  • ID: 9860
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[VB.NET 2003]
分類:[.NET]

ファイルをバイナリモードで開きある文字列(16進数)を検索し
指定した文字列に置換するにはどうしたらいいですか?
> ファイルをバイナリモードで開きある文字列(16進数)を検索し
> 指定した文字列に置換するにはどうしたらいいですか?

こんにちは中です。

ファイルを開いて
読み込んで
サーチして
置換してあげれば良いですよね?

ソレが16進数で比較するかどうかは3項目目に影響するだけです。


----------------------------------------------------
中博俊 MSMVP Visual Studio C# Since 2004/04-2005/03, MCP
http://naka.wankuma.com/
http://naka.wankuma.com/blog/
naka@wankuma.com

> > ソレが16進数で比較するかどうかは3項目目に影響するだけです。

の文章が理解できません!
知識不足ですみません!
よろしければ、詳しく教えてください。
お手数ですが、サンプルを書いていただくとありがたいです。
  • 題名: Re[3]: バイナリデータ
  • 著者: 魔界の仮面弁士
  • 日時: 2005/03/17 10:20:25
  • ID: 9868
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
>>>> ファイルをバイナリモードで開きある文字列(16進数)を検索し
>>> ソレが16進数で比較するかどうかは3項目目に影響するだけです。
> の文章が理解できません!

中さんの書かれた、
 1. ファイルを開く
 2. データを読み込む
 3. 読み込んだデータから検索する
 4. ヒットしたら、そのデータを置換する
という4つの処理項目のうち、検索元の文字列が
「16進数表現か10進数表現か」によって処理が
変わってくるのは、3番目の項目だけですよね。


> お手数ですが、サンプルを書いていただくとありがたいです。
上記4項目のうち、わからないのはどの部分でしょうか?
「全部わからない」というのは無しですよ。(^-^A

# 全てのサンプルとなると、コーディングを代行している事になっちゃいますし。
>>> ソレが16進数で比較するかどうかは3項目目に影響するだけです。
>
> の文章が理解できません!
…「文章が理解できない」って、相手に対していきなり失礼だと思うのだが(orz
まぁ、16進数値つまり数値としての検索であるか、文字列としての検索であるかが「サーチ」に影響するわけです。
理解に苦しむようならば、一度バイナリーエディタなどを見てみると吉。
バイナリーエディタ:BZ
http://www.zob.ne.jp/~c.mos/

> 知識不足ですみません!
というわけで、勢い良く言われてもなぁ。

> よろしければ、詳しく教えてください。
> お手数ですが、サンプルを書いていただくとありがたいです。
ここらへんは….NET環境ないのでmmです(ぉ

> 中 博俊さんへ
先日はどうもありがとうございました。
と言いつつもまだ解決していなかっ(ry
ぃぇぃぇ、田舎にいるので資料が見つかりませんだけです(orz
文章力が無く不快な思いをさせてすみませんでした。

「文章が理解できません」とは説明されていた文章が悪いんじゃなくて
私の知識不足で分からないと書いたつもりでした。
言葉足らずで不快な思いさせてしまったことをお詫び申し上げます。

私がわからない点は

16進数で読み込んだデータから検索する
ヒットしたら、そのデータを置換する

この過程がわかりません。
バイナリ編集ソフトみたいに検索→置換をしたいのです。
「サンプルを書いてください」と、図々し過ぎました。
参考ページ等ご紹介してくださいましたら幸いです。

何分お手数ですがご教授お願いいたします。

※ネット暦が浅く掲示板の書き込みは慣れていないので
見にくい文章ですみません。
> 16進数で読み込んだデータから検索する
多分、静的なSystem.Array.IndexOf()メソッドを使って、検索できます。

> ヒットしたら、そのデータを置換する
> この過程がわかりません。
置換するために選択した対象と同じ長さの元で置換するならば、
もとの配列に代入するだけでいいと思われます。
もとの配列の長さが増減するような置換は、何らかの形で補正を行わないといけません。
こういうのはプログラマの腕の見せ所で(ぇ
…定石があるのかねぇ…
単純に思いつく方法は、直前までの列に置換文字列を足し、直後からの文字列を足す方法です。
元の列=abcdefghi
検索対象=def
置換文字列=12
置換後の文字列=abc '+' 12 '+' ghi
この'+'という機能(演算)が面倒。

> バイナリ編集ソフトみたいに検索→置換をしたいのです。
> 「サンプルを書いてください」と、図々し過ぎました。
> 参考ページ等ご紹介してくださいましたら幸いです。
ゴメソ、ちょとわからん。
  • 題名: Re[6]: バイナリデータ
  • 著者: ken
  • 日時: 2005/03/17 12:04:03
  • ID: 9875
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
色々ありがとうございました。
まだ分からない部分が多々あるので、自分で試行錯誤してみます。
出来たら結果報告に参ります。

DOBON.NET | プログラミング道 | プログラミング掲示板