24

Hex Workshop をダウンロードしたところ、.dbc ファイルを読むように言われました。

オフセット 0x04 と 0x05 を読み取ると、28,315 が含まれているはずです。

これを行う方法がわかりませんか?0x04 とはどういう意味ですか?

4

6 に答える 6

14

0x04 は 4 の 16 進数です (0x は 16 進数表現の一般的なプレフィックス規則です。多くの人は 10 進数で考えているためです)。バイト 0 であるため、オフセット 0x04 は 5 番目のバイトになります)。

4 番目と 5 番目のバイトを合わせて 28315 になると言っていると思いますが、これはリトルエンディアンなのかビッグエンディアンなのかと言っていましたか?

28315 (10 進数) は 16 進数表記で 0x6E9B です。おそらくファイルでは、リトルエンディアンの場合は 0x9B 0x6E の順序になります。

注: リトル エンディアンとビッグ エンディアンは、バイトが書き込まれる順序を参照します。人間は通常、10 進数表記と 16 進数をビッグエンディアンの方法で書きます。

256 は 0x0100 として書き込まれます (左側の数字が最大のスケールです)。

ただし、これには 2 バイトが必要であり、リトル エンディアン システムでは最初に下位バイト (0x00 0x01) が書き込まれます。ビッグ エンディアン システムでは、最初に上位バイト (0x01 0x00) が書き込まれます。

通常、Intel システムはリトル エンディアンであり、他のシステムは異なります。

于 2008-09-26T18:57:49.557 に答える
3

バイナリ ファイルは、バイトの線形配列と考えてください。

0x04 は配列の 5 番目 (0 ベースの配列) の要素になり、0x05 は 6 番目になります。

0x04 と 0x05 の 2 つの値を OR 演算して、28,315 という数値を作成できます。

読み取っている値は 16 ビットであるため、1 つの値をビットシフトしてから、それらを OR で結合する必要があります。つまり、C# でファイルを操作している場合は、次のようなものを使用します。

int value = (ByteArray[4] >> 8) | ByteArray[5]);

これが 16 進アドレスの仕組みを説明するのに役立つことを願っています。

于 2008-09-26T19:00:45.167 に答える
2

4番目と5番目のXXコードです。

1 2 3 4 5 6
01 AB 11 7B FF 5A

したがって、0x04 と 0x05 は「7B」と「FF」です。

あなたの言っていることを仮定すると、あなたの場合、 7BFF はあなたの希望する値に等しくなければなりません。

HTH

于 2008-09-26T18:58:48.853 に答える
1

16 進数の 0x04 は 10 進数の 4 です。16 進数の 0x10 は 10 進数の 16 です。calc.exe16 進数と 10 進数を変換できます。

オフセット 4 は、ファイルの先頭から 4 バイトを意味します。オフセット 0 は、ファイルの最初のバイトです。

于 2008-09-26T18:58:47.467 に答える
1

バイト 4 と 5 を見てください。エンディアンに応じて、値は 0x6E 0x9B (または 0x9B 0x6E) になります。

于 2008-09-26T18:59:17.323 に答える
0

ここから始めてください。16 進値の読み方を習得すれば、問題を実際に解決するためのより良い状態になるでしょう。

于 2008-09-26T18:58:05.907 に答える