解释 java class 文件的十六进制转储
Interpreting hex dump of java class file
我了解 java .class 文件的结构,但是当我想解释原始十六进制数据时,我有点迷路了。
这是 class 文件的十六进制转储,不包括 header 和常量池。
我理解 header 是幻数,minor_version 和 major_version。似乎下一个值应该是访问标志。
这张图表中的值是多少? 000000b0?我认为这将是一个简单的数字而不是十六进制值。
哪个值是this_class,可以确定class详情的常量池索引?
000000b0
不是数据的一部分。就是后面16个字节所在的内存地址。
两位十六进制数字是实际数据。从左到右阅读它们。每行分为两组,每组八个,纯粹是为了帮助计算内存地址等
因此,为了间接回答您的问题,您可以通过简单地计算幻数、次要版本和主要版本使用的字节数来计算出访问标志的位置。接下来是访问标志。同样,要找到任何其他值(例如 this_class),您必须计算出它们的偏移量并查看数据中的那个位置。
您说您期望 "simple number not a hex vaue",但这没有任何意义,因为十六进制值 是 简单数字。它们只是以 base-16 而不是 base-10 表示。网上有很多资源可以教你如何在两者之间进行转换。
我了解 java .class 文件的结构,但是当我想解释原始十六进制数据时,我有点迷路了。
这是 class 文件的十六进制转储,不包括 header 和常量池。
我理解 header 是幻数,minor_version 和 major_version。似乎下一个值应该是访问标志。
这张图表中的值是多少? 000000b0?我认为这将是一个简单的数字而不是十六进制值。
哪个值是this_class,可以确定class详情的常量池索引?
000000b0
不是数据的一部分。就是后面16个字节所在的内存地址。
两位十六进制数字是实际数据。从左到右阅读它们。每行分为两组,每组八个,纯粹是为了帮助计算内存地址等
因此,为了间接回答您的问题,您可以通过简单地计算幻数、次要版本和主要版本使用的字节数来计算出访问标志的位置。接下来是访问标志。同样,要找到任何其他值(例如 this_class),您必须计算出它们的偏移量并查看数据中的那个位置。
您说您期望 "simple number not a hex vaue",但这没有任何意义,因为十六进制值 是 简单数字。它们只是以 base-16 而不是 base-10 表示。网上有很多资源可以教你如何在两者之间进行转换。