我下载了Hex Workshop,我被告知要读取.dbc文件。

  

如果您阅读,它应该包含28,315   偏移量0x04和0x05

我不确定该怎么做? 0x04是什么意思?

有帮助吗?

解决方案

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,其他系统也各不相同。

其他提示

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

0x04将是数组中的第5个(在基于0的数组中)元素,0x05将是第6个。

0x04和0x05中的两个值可以一起“或”运算,以创建数字28,315。

由于您正在读取的值是16位,您需要将一个值进行位移,然后将它们组合在一起,即如果您在c#中操作该文件,则可以使用以下内容:

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

希望这有助于解释十六进制地址的工作原理。

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

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

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

假设你在说什么,在你的情况下,7BFF应该等于你想要的值。

HTH

十六进制中的0x04是十进制的4。十六进制中的0x10是十进制的16。 calc.exe 可以为您转换十六进制和十进制。

偏移4表示文件开头的4个字节。偏移量0是文件中的第一个字节。

查看字节4和5,它们应具有值0x6E 0x9B(或0x9B 0x6E),具体取决于您的字节顺序。

启动此处。一旦你学会了如何读取十六进制值,你就可以更好地解决你的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top