BMP文件中奇怪的十六进制数字
Posted
技术标签:
【中文标题】BMP文件中奇怪的十六进制数字【英文标题】:Weird hex numbers in BMP file 【发布时间】:2013-08-15 04:05:53 【问题描述】:我在 BMP GRAPHICS 文件中有一个奇怪的东西。
我使用 FULLSHOT 9(屏幕捕获软件)创建它们(只需鼠标单击并在屏幕上拖动一个矩形并保存为 .bmp 文件)。
当我在二进制编辑器中查看文件时,我可以看到一个像素按预期使用了很长时间。
所以你会看到这样的东西:
(编辑器每行显示 8 个十六进制数字)(像素 = 3 个十六进制数字,例如“ED ED ED”)
0x00002f0
ED ED ED ED ED ED ED ED
ED ED ED ED ED ED ED ED
ED ED ED ED ED ED ED ED
ED ED ED ED ED ED ED ED
但是突然之间你会看到一个规则块(比如 Pixel = 3 hex numbers),但不是重复的数字
EF EF EF
F0 F0 F0
F2 F2 F2
F3 F3 F3
F5 F5 F5
F7 F7 F7
F8 F8 F8
FA FA FA
FB FB FB
FD FD FD
(为了清楚起见,我在每组 3 个之后都换行了.... 二进制编辑器连续显示 8 个十六进制数字)
我怀疑这些不是实际的像素,而是一些“信息” 然后你经常会看到一个奇怪的 0。
00 <----i suspect a terminator of some sort.
那么“信息”部分继续……
but now (most of the time) in reverse order
FD FD FD
FB FB FB
FA FA FA ..etc
然后停止,以及一个新的 looooong 像素重复。
DC DC DC DC DC DC DC DC
DC DC DC DC DC DC DC DC
DC DC DC DC DC DC DC DC
DC DC DC DC DC DC DC DC
DC DC DC DC DC DC DC DC
问题: 这些“信息”块让我无法收集所有实际像素。 如果我知道它们是什么,我可以告诉程序跳过它们。
问题 1: 这个“信息”部分的含义是什么?
问题 2: 零真的是终结者吗?
PS 我已经测量了重复出现的零之间的差异,它通常是我创建和检查的不同 .bmp 文件中“位图的”的倍数。
【问题讨论】:
【参考方案1】:您需要的所有信息都在Wikipedia on the BMP Format。
0x00002f0
你没有提到你在什么位置找到这个值,但这可能是原始像素数据的开始:
位图文件头
..
000Ah 4 字节偏移量,即起始地址,可以找到位图图像数据(像素阵列)的字节。
第一季度。从表面上看,“信息”只是一个调色板。 要求真彩色位图包含一个明确的调色板,但同样可能有一个。从理论上讲,这将是同一图像的优化 8 位调色板,但我不会指望它。您显示的部分是一个简单的灰色列表。
第二季度。这些零可能是 DWORD 行填充。它们出现在“位图宽度的倍数”处,因为图像中的每一行 实际上占据了“位图宽度的倍数”字节——RGB 为 3 倍,RGBA 为 4 倍。仅在行尾插入零以确保 下一行 行从 DWORD 边界开始。
【讨论】:
以上是关于BMP文件中奇怪的十六进制数字的主要内容,如果未能解决你的问题,请参考以下文章