首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有人能给我解释一下十六进制的偏移量吗?

有人能给我解释一下十六进制的偏移量吗?
EN

Stack Overflow用户
提问于 2008-09-26 18:56:01
回答 5查看 74.2K关注 0票数 24

我下载了十六进制工作坊,然后我被告知要读一个.dbc文件。

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

我不知道该怎么做?0x04是什么意思?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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系统是低端的,而其他系统有所不同。

票数 14
EN

Stack Overflow用户

发布于 2008-09-26 19:00:45

把一个二进制文件想象成一个线性字节数组。

0x04将是数组中的第五个元素(以0为基数的数组),0x05将是第六个元素。

可以将0x04和0x05中的两个值或在一起以创建数字28,315。

由于您正在读取的值是16位,您需要将一个值进行位移位,然后将它们进行OR运算,例如,如果您在c#中操作文件,您将使用以下内容:

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

希望这有助于解释十六进制地址是如何工作的。

票数 3
EN

Stack Overflow用户

发布于 2008-09-26 18:58:47

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/141262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档