Parsing 读取和分析位图的宽度/高度属性

Parsing 读取和分析位图的宽度/高度属性,parsing,binary,bitmap,Parsing,Binary,Bitmap,我试图通过读取文件中的原始字节并简单地检查它们的值来编写位图(.bmp)解析器/读取器,但我遇到了一些我根本无法理解的问题 我试图读取的图像是512x512像素,当我查看宽度属性时(在0x12和4个字节之后),它会显示00200(在十六进制编辑器中查看时)。我假设这与二进制值0000000000001000001000000000000000相同。这代表了512,我就是想不出去那里的步骤 所以我真正需要知道的是整数是如何以二进制形式表示的,以及如何正确解析它们?非常感谢您的帮助。:) 实际上,十

我试图通过读取文件中的原始字节并简单地检查它们的值来编写位图(.bmp)解析器/读取器,但我遇到了一些我根本无法理解的问题

我试图读取的图像是512x512像素,当我查看宽度属性时(在
0x12
和4个字节之后),它会显示
00200
(在十六进制编辑器中查看时)。我假设这与二进制值
0000000000001000001000000000000000
相同。这代表了512,我就是想不出去那里的步骤


所以我真正需要知道的是整数是如何以二进制形式表示的,以及如何正确解析它们?非常感谢您的帮助。:)

实际上,十六进制中的
0x200
等于十进制中的
512
。宽度/高度属性的位置可能有误。

您在十六进制编辑器中看到的实际上是正确的。请记住,字节是按顺序排列的,因此值实际上是
00=0x0200=512

Ahh。。我只是想检查一下我是否理解这一点,比如说它说的是EB 88 00 00 00,这是否意味着它应该被解释为00 00 88 EB=0x88EB=35051?@vrutberg:是的,这是正确的(当然,这只适用于一点endian表示,这几乎被今天的所有PC使用)。解析这些值时,不必考虑这一点(这只是内部表示的问题)。