请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站 今天是: 2021-05-06    美好的一天,从现在开始
开启辅助访问      
切换到窄版

Waylee黑技术

 找回密码
 注册会员
搜索
热搜: 天龙 运维 kali
查看: 250|回复: 1
收起左侧

[计算机基础] 任务01-信息编码:纯⽩⾊的bmp图⽚ 十六进制画一个“C”

[复制链接]

311

主题

355

帖子

1516

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1516
发表于 2021-4-12 23:35:18 | 显示全部楼层 |阅读模式
拓展任务


先通过搜索引擎了解bmp⽂件数据格式的特征
再⽤截图⼯具截⼀幅8×8⼤⼩纯⽩⾊的bmp图⽚
然后⽤⼆进制编辑器观察bmp图⽚⽂件数据的规律
重复上述步骤,摸清规律后,在⽩底上⽤⿊⾊线条「画」出字⺟「C」


使用QQ截图工具,截取一张8x8的bmp格式图片,

用Hex Editor Neo打开 "8x8纯白.bmp",可以看到这个文件的全部数据如下图所示:

1

1


1.位图文件头(BITMAPFILEHEADER

位图文件头分4部分,共14字节:

名称

占用空间

内容

实际数据

bfType

2字节

标识,就是“BM”二字

BM

bfSize

4字节

整个BMP文件的大小

0x00000136(310)【与右键查看图片属性里面的大小值一样】

bfReserved1/2

4字节

保留字,没用

0

bfOffBits

4字节

偏移数,即 位图文件头+位图信息头+调色板 的大小

0x36(54)


注意,Windows的数据是倒着念的,这是PC电脑的特色。如果一段数据为50 1A 25 3C,倒着念就是3C 25 1A50,即0x3C251A50。因此,如果bfSize的数据为36 01 00 00,实际上就成了0x00000136,也就是0xC00136。

2

2

2位图信息头(BITMAPINFOHEADER )

位图信息头共40字节:

名称

占用空间

内容

实际数据

biSize

4字节

位图信息头的大小,为40

0x28(40)

biWidth

4字节

位图的宽度,单位是像素

0x200(512)

biHeight

4字节

位图的高度,单位是像素

0x200(512)

biPlanes

2字节

固定值1

1

biBitCount

2字节

每个像素的位数

1-黑白图,4-16色,8-256色,24-真彩色

0x18(24)

biCompression

4字节

压缩方式,BI_RGB(0)为不压缩

0

biSizeImage

4字节

位图全部像素占用的字节数,BI_RGB时可设为0

0x0C

biXPelsPerMeter

4字节

水平分辨率(像素/米)

0

biYPelsPerMeter

4字节

垂直分辨率(像素/米)

0

biClrUsed

4字节

位图使用的颜色数

如果为0,则颜色数为2的biBitCount次方

0

biClrImportant

4字节

重要的颜色数,0代表所有颜色都重要

0


作为真彩色位图,我们主要关心的是biWidth和biHeight这两个数值,两个数值告诉我们图像的尺寸。biSize,biPlanes,biBitCount这几个数值是固定的。想偷懒的话,其它的数值可以一律用0来填充。

3

3


调色板地址


图像的调色板地址从00000036h开始存储
图4.jpg
cat2.bmp图像的调色板地址从00000036h开始到00000135h结束
                                                                                 
photoshop中调色板显示为:ff 00 00(分别表示 红 绿 ,Hex Editor Neo 中 00 00 ff 00 表示红色,
photoshop中调色板显示为:00 00 ff(分别表示 红 绿 Hex Editor Neo 中 ff 00 00 00 表示蓝色。两者刚好是倒过来的。

如下图所示

5

5


用绿色画一个C字



将16进制全部复制到文本编辑器里面,按8x8像素排列好,进行修改。
根据前面的试验结果,ff ff ff ff 修改为00 ff 00 ff就可以变为绿色

完结

完结



from:https://blog.csdn.net/aidem_brown/article/details/80500637

⾃测

1101 0101 0001转⼗六进制是多少?有什么最快的计算⽅法能得到结果?
解答:
每四位表示一个十六进制,答案是b51

101011.101011对应的⼗进制数是多少?
解答:
整数部分:1*2^5+0*2^4+1*2^3+0*2^2+1*2^1+1*2^0=43
小数点后:1*2^-1+0*2^-2+1*2^-3+0*2^-4+1*2^-5+1*2^-6   =0.671875
43+0.671875=43.671875

常⻅的⾳频编码格式有哪些?
答:aac,MP3,wma

常⻅的视频编码格式有哪些?
答:H.261、H.262、H.263、H.264、H.265、MPEG


⼀个尺⼨8×8⼤⼩的png全⿊图⽚前四个字节的⼗六进制值是什么?
10001001 01010000 01001110 01000111对应
89 50 4e 47

UTF8三字节的编码⽅式为:1110xxxx 10xxxxxx 10xxxxxx,汉字【中】的Unicode编码⼗六进制值是0x4e2dUnicode编码
按三字节编码转换到⼗六进制的UTF8编码的计算过程是什么?

答:
4e2d分别是 0100 1110 0010 1101依次填入1110xxxx 10xxxxxx 10xxxxxx(假设是从左到右0-7位)(假设是从左到右 1-3字节)第一个字节4-7位:0100
第二个字节的2-5位:1110
第二个字节6-7位和第三个字节2-3位 :0010
第三个字节4-7位:1101
插入后得到 11100100 10111000 10101101
转换为16进制为:edbaa4
form:https://blog.csdn.net/wangwenan1993/article/details/45559369

解题思路参考如下:
UNICODE uCA(1100 1010) 编码成UTF-8将需要2个字节:
uCA C3 8A, 过程如下:
uCA(1100 1010)处于0080 ~07FF之间,从上文中的转换表可知对其编码需要2bytes,即两个字节,其对应 UTF-8格式为: 110X XXXX 10XX XXXX。从此格式中可以看到,对其编码还需要11位,而uCA(1100 1010)仅有8位,这时需要在其二进制数前补0凑成11位: 000 1100 1010, 依次填入110X XXXX 10XX XXXX的空位中, 即得 1100 0011 1000 1010(C38A)。
同理,UNICODE uF03F (1111 0000 0011 1111) 编码成UTF-8将需要3个字节:
u F03FEF 80 BF,对应格式为:1110XXXX 10XX XXXX 10XX XXXX,编码还需要16位,将1111 0000 0011 1111(F03F)依次填入,可得 1110 1111 1000 0000 1011 1111(EF 80 BF)。
UTF8文件协议里有更详细说明


如果要提供⼀个实时的流媒体服务器,除了ffmpeg,还需要使⽤哪个组件?
答:ffmpeg和ffserver配合使用可以实现实时的流媒体服务。








311

主题

355

帖子

1516

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1516
 楼主| 发表于 2021-4-13 22:36:36 | 显示全部楼层
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

为兴趣而生,注册一起交流。 立即登录云玩 立即注册

QQ|手机版|Waylee黑技术 ( 浙ICP备15015590号-1 )

|浙公网安备33048102000118号

GMT+8, 2021-5-6 23:20 , Processed in 0.081193 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表