我下载了Hex Workshop,我被告知要读取.dbc文件。
如果您阅读,它应该包含28,315 偏移量0x04和0x05
我不确定该怎么做? 0x04是什么意思?
答案 0 :(得分:11)
0x04是4的十六进制(0x只是数字的基数16表示的公共前缀约定 - 因为许多人认为是十进制),这将是第四个字节(因为他们说偏移,他们可能会计算第一个字节为字节0,因此偏移量0x04将是第5个字节)。
我猜他们说的是第4和第5个字节一起是28315,但他们是否说这是小端还是大端?
28315(十进制)是十六进制表示的0x6E9B,如果它是小端的话,可能在文件中按顺序为0x9B 0x6E。
注意:Little-endian和big-endian指的是写入的字节数。人类通常以大端方式写十进制表示法和十六进制,所以:
256将被写为0x0100(左边的数字是最大的比例)
但这需要两个字节,而小端系统将首先写入低字节:0x00 0x01。 Big-endian系统将首先写入高字节:0x01 0x00。
通常,英特尔系统是little-endian,其他系统也各不相同。
答案 1 :(得分:2)
这是您观看的第4和第5个XX代码......
1 2 3 4 5 6 01 AB 11 7B FF 5A
因此,0x04和0x05是“7B”和“FF”。
假设你在说什么,在你的情况下,7BFF应该等于你想要的值。
HTH
答案 2 :(得分:2)
将二进制文件视为字节的线性数组。
0x04将是数组中的第5个(在基于0的数组中)元素,0x05将是第6个。
0x04和0x05中的两个值可以一起“或”运算,以创建数字28,315。
由于您正在读取的值是16位,您需要将一个值进行位移,然后将它们组合在一起,即如果您在c#中操作该文件,则可以使用以下内容:
int value = (ByteArray[4] >> 8) | ByteArray[5]);
希望这有助于解释十六进制地址的工作原理。
答案 3 :(得分:1)
十六进制中的0x04是十进制的4。十六进制中的0x10是十进制的16。 calc.exe
可以为您转换十六进制和十进制。
偏移4表示文件开头的4个字节。偏移量0是文件中的第一个字节。
答案 4 :(得分:1)
查看字节4和5,它们应具有值0x6E 0x9B(或0x9B 0x6E),具体取决于您的字节顺序。
答案 5 :(得分:0)
开始here。一旦你学会了如何读取十六进制值,你就可以更好地解决你的问题。