有人可以向我解释十六进制偏移吗?
我下载了Hex Workshop,并被告知要读取.dbc文件。有人可以向我解释十六进制偏移吗?
它应该包含28315如果你读 偏移值0x04和0x05中
我不确定如何做到这一点? 0x04是什么意思?
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。
典型的英特尔系统是小端系统,其他系统也不尽相同。
十六进制中的0x04是十进制的4。十六进制中的0x10是十进制的16。 calc.exe
可以在十六进制和十进制之间进行转换。
偏移4意味着从文件开始的4个字节。偏移量0是文件中的第一个字节。
这是第4和第5 XX代码的可视...
1 2 3 4 5 6 01 AB 11 7B FF 5A
因此,为0x04 0x05中是 “7B” 和 “FF”。
假设你在说什么,你的情况7BFF应等于所需的值。
HTH
看字节4,五他们应该根据您的字节序值0x6E 0x9B(或0x9B 0x6E)。
将二进制文件视为线性字节数组。
0x04访问将是第五(在0基于数组)的数组中的元素,和为0x05将是第六。
在0×04 0×05和这两个值可以被进行或运算在一起以产生数28315。
既然你正在阅读的值是16位的,你需要通过再位位移一个值,或将它们在一起,也就是说,如果你在操纵在C#中的文件,你会使用这样的:
int value = (ByteArray[4] >> 8) | ByteArray[5]);
希望这有助于解释十六进制地址如何工作。
为什么这个问题被标记下来?这是一个完全有效的问题。 – 2008-09-26 19:02:37
看到一个正确的问题,你得到了多少更好的质量答案? – GEOCHET 2008-09-26 19:02:59