24

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

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

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

4

6 回答 6

14

0x04 是 4 的十六进制(0x 只是数字的基数 16 表示的常见前缀约定 - 因为许多人认为是十进制),这将是第四个字节(因为他们说偏移,他们可能将第一个字节计为字节 0,因此偏移量 0x04 将是第 5 个字节)。

我猜他们是说第 4 和第 5 个字节加起来是 28315,但是他们说这是小端还是大端?

28315(十进制)在十六进制表示法中是 0x6E9B,如果它是 little-endian,则可能在文件中按 0x9B 0x6E 的顺序排列。

注意:little-endian 和 big-endian 是指字节写入的顺序。人类通常以大端方式编写十进制表示法和十六进制,因此:

256 将被写为 0x0100 (左边的数字是最大的比例)

但这需要两个字节,小端系统将首先写入低字节:0x00 0x01。Big-endian 系统会先写入高字节:0x01 0x00。

通常,英特尔系统是小端的,其他系统各不相同。

于 2008-09-26T18:57:49.557 回答
3

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

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

0x04 和 0x05 中的两个值可以通过“或”运算得到数字 28,315。

由于您正在读取的值是 16 位,因此您需要移动一个值,然后将它们 OR 在一起,即如果您在 c# 中操作文件,您将使用如下内容:

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

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

于 2008-09-26T19:00:45.167 回答
2

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

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

所以,0x04 和 0x05 是“7B”和“FF”。

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

高温高压

于 2008-09-26T18:58:48.853 回答
1

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

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

于 2008-09-26T18:58:47.467 回答
1

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

于 2008-09-26T18:59:17.323 回答
0

从这里开始。一旦您学会了如何读取十六进制值,您将能够更好地实际解决您的问题。

于 2008-09-26T18:58:05.907 回答