• ベストアンサー

【バイナリファイル】を十六進数化した場合の疑問です

例えば、 「007Ah 番地を 01h にします。」 と記載されているとしたら、 Pat http://www.vector.co.jp/soft/dos/util/se013398.html 具体的に何処をどのように書き換えるのでしょうか。 稚拙な質問で申し訳ないです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Kaneyan-R
  • ベストアンサー率42% (1341/3128)
回答No.5

バイナリデータの並び(バイナリエディタの表示)を全く見たことが無い人には、文字で説明しても分かりにくいでしょうね。 バイナファイルに限らず、ファイルのデータを16進数二桁(8bit=1Byte)で括って、それに順番をつけたものが「アドレス」です。 ファイルの一番初めにあるデータのアドレスを「0000」とし、以降0001・0002・・・・0009・000A・000B・・・000Fとなり、16進数なので16番目で桁上がりし、000Fの次は0010となります。 >「007Ah 番地を 01h にします。」 これは、「アドレス:007Aにあるデータを、01に書き換える」と言う意味です。 バイナリエディタでファイルを開くと、だいたい添付画像のような表形式で表示されます。 ※添付画像はその辺に転がっていたショートカット(*.lnk)ファイルを開いたものです。 縦が上位アドレス、横が下位一桁のアドレスを意味します。 アドレスが007Aですから、「縦が0070」で「横が0A」の位置にあるデータの値、添付画像で言えば「00」を01に書き換えると言う事になります。 どうしてバイナリデータを書き換えようとしているのかは知りませんが、バイナリデータを一つでもいじると、プログラムは全く違った動作をしてしまいますので、よほどの事がない限り、中・上級者でも普通は手を出しません。 書き換えるのは構いませんが、それでプログラムが動作不能に陥っても、だれも助けてはくれませんから、充分覚悟して「自己責任」で実行して下さい。

ugg06006
質問者

お礼

>「007Ah 番地を 01h にします。」 これは、 「アドレス:007Aにあるデータを、01に書き換える」と言う意味です。 よく分かりました。 有難う御座いました。

その他の回答 (4)

  • rasuka555
  • ベストアンサー率49% (175/352)
回答No.4

バイナリエディタで管理するデータは通常、バイト(Byte)単位のデータをいじくるものです。 バイトは8ビット、つまり2の8乗を指し、2進数ならば8桁で表せます。 これを16進数で表すから2桁の数字での表示するのです。 何のためにバイナリをいじろうとしているかは存じませんが、 末尾についているhは16進数であることを表すための文字です(HEXの頭文字) ここから考えられると思います。

ugg06006
質問者

お礼

早速のレスポンス、誠に有難う御座いました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

#1さんじゃないですが 16進数は0~9、A、B…F、桁上がりで10ですよ? > 「007Ah 番地を 01h にします。」 アドレスの下1桁が「A」なんだから、先頭から「11」番目ですよ? 00・・10だから、値「10」が「11」番目 #1さんの回答で合ってます

ugg06006
質問者

お礼

よくよく、考えてみれば、当たり前のことでした。 ご丁寧な解説、恐縮の限りです。

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.2

Pat画面がわかりませんが、 左の行で下二桁70の行の、上の列0A列の交点の所のデータを01に変更するという意味です。

ugg06006
質問者

お礼

ごっ察しのとおりです。

  • weboner
  • ベストアンサー率45% (111/244)
回答No.1

通常のバイナリエディタであれば 0070から始まる行の11番目のデータを01に書き換える 0070 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ↑ 例えばデータがこんな感じに表示されていたら10の部分を01にする

ugg06006
質問者

お礼

十六進数であれば、01 ~ 09 その後は、A, B,C,D,E,F となって、十六進数に至ります。 貴公に失礼千万なのですが、 どうして、十六進数の10 が、「01」に書き換えられるのでしょうか。 初歩的な質問で、申し訳ないのですが、ご説明、賜りたく、宜しく御願い申し上げます。

関連するQ&A