質問
Hex Workshopをダウンロードし、.dbcファイルを読むように言われました。
読む場合、28,315を含む必要があります オフセット0x04および0x05
これを行う方法がわかりませんか? 0x04の意味?
解決
0x04は4の16進数(0xは数字の基数16表現の一般的なプレフィックス規則です-多くの人は10進数で考えるため)、それは4番目のバイトになります(オフセットと言っているため、最初のバイトはバイト0なので、オフセット0x04は5番目のバイトになります。
4バイト目と5バイト目を合わせて28315になると言っているのでしょうが、これがリトルエンディアンかビッグエンディアンかを言ったのですか?
28315(10進数)は16進表記で0x6E9Bです。リトルエンディアンの場合は、おそらくファイル内の0x9B 0x6Eの順序です。
注:リトルエンディアンおよびビッグエンディアンは、バイトが書き込まれる順序を示します。人間は通常、10進表記と16進表記をビッグエンディアンで記述します。
256は0x0100として書き込まれます(左側の数字が最大のスケールです)
ただし、2バイトかかり、リトルエンディアンシステムは下位バイトを最初に書き込みます:0x00 0x01。ビッグエンディアンシステムは、最初に上位バイト0x01 0x00を書き込みます。
通常、Intelシステムはリトルエンディアンであり、他のシステムは異なります。
他のヒント
バイトの線形配列としてバイナリファイルを考えます。
0x04は配列の5番目(0ベースの配列)の要素であり、0x05は6番目の要素です。
0x04と0x05の2つの値を論理和して、28,315の数値を作成できます。
読み取っている値は16ビットなので、1つの値をビットシフトしてから、それらをORする必要があります。つまり、c#でファイルを操作している場合は、次のようなものを使用します。
int value = (ByteArray[4] >> 8) | ByteArray[5]);
うまくいけば、これは16進アドレスがどのように機能するかを説明するのに役立ちます。
4番目と5番目のXXコードで表示しています...
1 2 3 4 5 6 01 AB 11 7B FF 5A
つまり、0x04と0x05は「7B」です。および" FF"。
あなたが言っていることを仮定すると、あなたの場合、7BFFはあなたの望む値と等しくなければなりません。
HTH
16進数の0x04は10進数の4です。 16進数の0x10は10進数の16です。 calc.exe
は、16進数と10進数の間で変換できます。
オフセット4は、ファイルの先頭から4バイトを意味します。オフセット0はファイルの最初のバイトです。
バイト4および5を見ると、エンディアンに応じて値0x6E 0x9B(または0x9B 0x6E)が必要です。
こちらを開始します。 16進値の読み方を学べば、問題を実際に解決できるようになります。