有人能解释十六进制偏移给我吗?(Can someone explain hex offsets to

2019-07-17 18:31发布

我下载六角车间,有人告诉我,读.dbc文件。

它应该包含28315如果你读偏移值0x04和0x05中

我不确定如何做到这一点? 这是什么意思0×04?

Answer 1:

0×04是4个十六进制(该0X仅仅是数字的基数为16表示一个共同的前缀约定 - 因为很多人认为十进制),这将是第四个字节(因为他们所说的偏移,他们大概算的第一个字节为字节0,所以偏移值0x04将是5字节)。

我猜他们说,第4和第5个字节在一起会是28315,但没有他们说,如果这是小端还是大端?

28315(十进制)是0x6E9B十六进制表示,可能在为了0x9B 0x6E文件,如果是小端。

注:小端和大端是指字节的排列顺序。 人类典型的写十进制表示和十六进制在大端方式,所以:

256将被写为0100(左边的数字是规模最大)

但是,这需要两个字节和little-endian系统将写入低字节:0×00 0×01。 大端系统会先写高字节:0×01×00。

通常,英特尔系统是小端和其他系统不同而不同。



Answer 2:

这是第4和第5 XX代码您的观看...

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

因此,为0x04 0x05中是 “7B” 和 “FF”。

假设你在说什么,你的情况7BFF应等于所需的值。

HTH



Answer 3:

认为一个二进制文件作为字节的线性阵列的。

0×04将是第五(在0基于数组)的数组中的元素,和为0x05将是第六。

在0×04 0×05和这两个值可以被进行或运算在一起以产生数28315。

既然你正在阅读的值是16位的,你需要通过再一个位位移值OR在一起,也就是说,如果你在操纵在C#中的文件,你会使用这样的:

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

希望这有助于解释十六进制地址是如何工作的。



Answer 4:

0×04在十六进制是十进制4。 0x10的十六进制是十进制16。 calc.exe可以十六进制和十进制之间的转换你。

从文件开始的偏移量4种手段4个字节。 偏移0是文件中的第一个字节。



Answer 5:

看看字节4,五他们应该根据您的字节序值0x6E 0x9B(或0x9B 0x6E)。



Answer 6:

开始在这里 。 一旦你学会如何阅读十六进制值,你会在更好的状态来实际解决您的问题。



文章来源: Can someone explain hex offsets to me?