首页 > 编程知识 正文

现代编译原理c语言描述修订版pdf,深度探索C++对象模型pdf

时间:2023-05-05 19:14:54 阅读:167287 作者:731

由于该楼层涉嫌违规,系统将其折叠并隐藏,以显示该楼层

bmp :

位深度存储在第29个和第30个byte中,但实际上第30个byte一定是0,所以看第29个——b[28]就好了。

intbitsperpixel=(b[28]0xff )|)| (b[29]0xff ) 8;

gif :

位深在第11个byte中,只有一个,很容易找到。 当然,这是第一张。 如果此GIF文件是由多个图像组成的运动图像,则位深度必须是一个位深度最高的位深度。

intbitsperpixel=(b[10]0x07 ) 1;

jpg :

JPEG图像文件的高压缩保存方式,里面的规则很复杂,规定一个标记有一个长度。

一个标记有一个长度。 要找出比特的深度,先找正确的标记,找正确的标记,然后往下移动几个人就可以了。

int i=2;

while (真)。

intmarker=(b[I]0xff )8| ) b[I1]0xff );

intsize=(B[I2]0xff )8| ) B[I3]0xff );

if (marker=0xffc0marker=0xffcfmarker!=0x ff C4标记!=0xffC8({

intbitsperpixel=(b[I4]0xff ) ) * (b[i 9]0xff );

黑;

} else {

i =size 2;

}

}

png:

这有点奇怪。 PNG图像有——red、green、blue和alpha四个通道,但可能不是32位,因为并非所有PNG图像都有透明区域。

我试了两种情况。 使用Photoshop创建新图像。 此时唯一的图层是背景图层,不转换为普通图层,直接存储为PNG图像文件。 右键单击文件并打开属性,可以看到位深度为24位。 2 .使用QQ截图,将剪切的图像直接保存为PNG图像文件。 这样的话,也可以知道是24位。

但是,如果用mspaint(Microsoftpaint,Windows附带的绘图软件)打开后保存,就会发现位深为32位(当然文件也很大)。

我从代码中得到的方法是这样的

在第26个byte的数值为2或6的情况下,位深度为3倍,第25个byte; 否则,直接是第25个byte。 但是,我发现这样得到的结果总是第24位而不是第32位,所以我认为有两种可能性。 1 .这个代码可能错了,作者可能在找错误的位置; 2 .该方法只能找到除alpha通道外的其他三个信道的比特深度,是否存在alpha通道需要另外寻找信号进行确认。

intbitsperpixel=(b[25]0xff )==2||) b[25]0xff )==6? (b ) 24 )0xff ) 3:b ) 24 )0xff;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。