我下载了十六进制工作坊,然后我被告知要读一个.dbc文件。
如果读取偏移量0x04和0x05,则应包含28,315
我不知道该怎么做?0x04是什么意思?
发布于 2008-09-26 18:57:50
0x04是4的十六进制( 0x只是16进制表示数字的常见前缀约定-因为许多人认为是十进制),这将是第四个字节(因为他们说的是偏移量,他们可能将第一个字节算作字节0,所以偏移量0x04将是第五个字节)。
我猜他们是说第四个和第五个字节加起来是28315,但是他们有没有说这是小端还是大端呢?
28315 (十进制)是十六进制表示法中的0x6E9B,如果它是小端,则可能在文件中的顺序为0x9B 0x6E。
注意: Little-endian和big-endian是指字节写入的顺序。人类通常以大端的方式写十进制和十六进制,所以:
256将写为0x0100 (左边的数字是最大的刻度)
但这需要两个字节,小端系统将首先写入低字节: 0x00 0x01。Big-endian系统将首先写入高字节: 0x01 0x00。
通常,Intel系统是低端的,而其他系统有所不同。
发布于 2008-09-26 19:00:45
把一个二进制文件想象成一个线性字节数组。
0x04将是数组中的第五个元素(以0为基数的数组),0x05将是第六个元素。
可以将0x04和0x05中的两个值或在一起以创建数字28,315。
由于您正在读取的值是16位,您需要将一个值进行位移位,然后将它们进行OR运算,例如,如果您在c#中操作文件,您将使用以下内容:
int value = (ByteArray[4] >> 8) | ByteArray[5]);
希望这有助于解释十六进制地址是如何工作的。
发布于 2008-09-26 18:58:47
十六进制的0x04是十进制的4。十六进制的0x10是十进制的16。calc.exe
可以在十六进制和十进制之间进行转换。
偏移量4表示从文件开头开始的4个字节。偏移量0是文件中的第一个字节。
https://stackoverflow.com/questions/141262
复制相似问题