2008-09-26 371 views
17

我下载了Hex Workshop,并被告知要读取.dbc文件。有人可以向我解释十六进制偏移吗?

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

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

+5

为什么这个问题被标记下来?这是一个完全有效的问题。 – 2008-09-26 19:02:37

+0

看到一个正确的问题,你得到了多少更好的质量答案? – GEOCHET 2008-09-26 19:02:59

回答

9

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

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

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

注意:Little-endian和big-endian是指写入顺序字节。人类典型的写十进制表示和十六进制在大端方式,所以:

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

但是,这需要两个字节和little-endian系统将首先写入低字节:0x00 0x01。大端系统将首先写入高位字节:0x01 0x00。

典型的英特尔系统是小端系统,其他系统也不尽相同。

1

开始here。一旦你学会了如何读取十六进制值,你将会更好地解决你的问题。

1

十六进制中的0x04是十进制的4。十六进制中的0x10是十进制的16。 calc.exe可以在十六进制和十进制之间进行转换。

偏移4意味着从文件开始的4个字节。偏移量0是文件中的第一个字节。

2

这是第4和第5 XX代码的可视...

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

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

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

HTH

1

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

2

将二进制文件视为线性字节数组。

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

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

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

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

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

相关问题