有人可以向我解释十六进制补偿吗?

我下载了Hex Workshop,我被告知要读取.dbc文件。   如果你阅读它应该包含28,315   偏移量0x04和0x05 我不确定该怎么做? 0x04是什么意思?     
已邀请:
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。 通常,英特尔系统是小端的,其他系统也各不相同。     
这是你观看的第4和第5个XX代码...... 1 2 3 4 5 6 01 AB 11 7B FF 5A 因此,0x04和0x05是“7B”和“FF”。 假设你在说什么,在你的情况下,7BFF应该等于你想要的值。 HTH     
将二进制文件视为线性字节数组。 0x04将是数组中的第5个(在基于0的数组中)元素,0x05将是第6个元素。 0x04和0x05中的两个值可以一起进行“或”运算,以创建数字28,315。 由于您正在读取的值是16位,您需要将一个值进行位移,然后将它们组合在一起,即如果您在c#中操作该文件,则可以使用以下内容:
int value = (ByteArray[4] >> 8) | ByteArray[5]);
希望这有助于解释十六进制地址的工作原理。     
十六进制中的0x04是十进制的4。十六进制中的0x10是十进制的16。
calc.exe
可以为您转换十六进制和十进制。 偏移4表示文件开头的4个字节。偏移0是文件中的第一个字节。     
查看字节4和5,它们应具有值0x6E 0x9B(或0x9B 0x6E),具体取决于您的字节顺序。     
从这里开始。一旦你学会了如何读取十六进制值,你就可以更好地解决你的问题了。     

要回复问题请先登录注册