任务01-信息编码:纯⽩⾊的bmp图⽚ 用Hex Editor Neo画一个“C

拓展任务


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


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

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

 


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.位图信息头(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来填充。

 


调色板地址图像的调色板地址从00000036h开始存储

图像的颜色地址从00000036h开始到00000135h结束
                                                                                 
photoshop中调色板显示为:ff 00 00(分别表示 红 绿 ,Hex Editor Neo 中 00 00 ff 00 表示红色,前三位分别表示 蓝 绿 红,第四位没有影响颜色。
photoshop中调色板显示为:00 00 ff(分别表示 红 绿 Hex Editor Neo 中 ff 00 00 00 表示蓝色。证明两者刚好是倒过来的。

如下图所示,

我用框的颜色 代表 三个字节所代表的颜色


用绿色画一个C字

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

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 编码⼗六进制值是 0x4e2d Unicode 编码
按三字节编码转换到⼗六进制的 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配合使用可以实现实时的流媒体服务。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪舞枫红

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值