- ベストアンサー
【バイナリファイル】を十六進数化した場合の疑問です
例えば、 「007Ah 番地を 01h にします。」 と記載されているとしたら、 Pat http://www.vector.co.jp/soft/dos/util/se013398.html 具体的に何処をどのように書き換えるのでしょうか。 稚拙な質問で申し訳ないです。
- みんなの回答 (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に書き換えると言う事になります。 どうしてバイナリデータを書き換えようとしているのかは知りませんが、バイナリデータを一つでもいじると、プログラムは全く違った動作をしてしまいますので、よほどの事がない限り、中・上級者でも普通は手を出しません。 書き換えるのは構いませんが、それでプログラムが動作不能に陥っても、だれも助けてはくれませんから、充分覚悟して「自己責任」で実行して下さい。
その他の回答 (4)
- rasuka555
- ベストアンサー率49% (175/352)
バイナリエディタで管理するデータは通常、バイト(Byte)単位のデータをいじくるものです。 バイトは8ビット、つまり2の8乗を指し、2進数ならば8桁で表せます。 これを16進数で表すから2桁の数字での表示するのです。 何のためにバイナリをいじろうとしているかは存じませんが、 末尾についているhは16進数であることを表すための文字です(HEXの頭文字) ここから考えられると思います。
お礼
早速のレスポンス、誠に有難う御座いました。
- bin-chan
- ベストアンサー率33% (1403/4213)
#1さんじゃないですが 16進数は0~9、A、B…F、桁上がりで10ですよ? > 「007Ah 番地を 01h にします。」 アドレスの下1桁が「A」なんだから、先頭から「11」番目ですよ? 00・・10だから、値「10」が「11」番目 #1さんの回答で合ってます
お礼
よくよく、考えてみれば、当たり前のことでした。 ご丁寧な解説、恐縮の限りです。
- kkkkkm
- ベストアンサー率66% (1721/2591)
Pat画面がわかりませんが、 左の行で下二桁70の行の、上の列0A列の交点の所のデータを01に変更するという意味です。
お礼
ごっ察しのとおりです。
- weboner
- ベストアンサー率45% (111/244)
通常のバイナリエディタであれば 0070から始まる行の11番目のデータを01に書き換える 0070 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ↑ 例えばデータがこんな感じに表示されていたら10の部分を01にする
お礼
十六進数であれば、01 ~ 09 その後は、A, B,C,D,E,F となって、十六進数に至ります。 貴公に失礼千万なのですが、 どうして、十六進数の10 が、「01」に書き換えられるのでしょうか。 初歩的な質問で、申し訳ないのですが、ご説明、賜りたく、宜しく御願い申し上げます。
お礼
>「007Ah 番地を 01h にします。」 これは、 「アドレス:007Aにあるデータを、01に書き換える」と言う意味です。 よく分かりました。 有難う御座いました。