任务一:用【0】和【1】绘图
-
画出自己喜欢的图形(整个我喜欢的菱形)
-
画出我的名字(名字太复杂,先画个姓吧)
-
彩色像素
这里我选择用24位数来表示像素,红,绿,蓝别占据8位,用不同的8位组合可以组合出多种颜色,首先用单个1表示出三种原色:红,绿,蓝;然后进行两两组合就呈现出各种颜色,三个8位都是0则是最终的黑色。 -
二进制存储图片文件的原理
图像文件存储的都是每一个像素对应的颜色值。
1、位图文件有两种存储像素数据的格式。16777216色(真彩色)的图像,一个像素的颜色可以用24位数据表示。256色的图像可以用调色板对颜色的信息进行编码,一个像素的值对应的是调色板的索引,而不是直接对应一个像素的颜色,调色板的索引映射为像素的颜色。
2、以一百万个像素,256种颜色的BMP文件在电脑上的存储为例。这个文件包括一个十四字节的文件首部,一个四十字节的信息首部,一个1024字节的颜色表,一兆字节的位图数据。文件首部的前两个字节由字符BM组成,还包括了文件长度和位图数据在文件中的起始位置。
3、文件的信息首部包含了图像的高、宽、颜色数等非图形数据。这个图像共有一百万个像素,一个像素需要八位的颜色信息,文件的这一部分的长度是一百万个字节,字节排放的顺序是自左到右从图像的最下面那行开始,这个文件的总大小是1001078字节。
任务二:掌握进制编辑器
- 创建一个文本,内容位:Hello World
- 用Hex Editor Neo打开文件
- 修改里面的二进制数据,观察文件变化
- 截取一张8x8的空白图片,保存为png格式,用进制编辑器打开
png文件最开始的8个字节表示文件格式的定义。
png文件内容数据表示为一下内容:
其中各个字段代表内容为:
- 00 00 00 0d :文件头数据长度
- 49 48 44 52 :数据块类型标志,即IHDR
- 00 00 00 08 :图像宽度
- 00 00 00 08 :图像高度
- 08 :表示256色
- 02 :表示索引图像
- 00 :使用Deflate压缩编码压缩图像数据
- 00 :为将来使用更好的压缩方法预留
- 00 :非隔行扫描
- 4b 6d 29 dc :CRC字段
然后根据编码规则对二进制进行改变,观察其变化:
可以看到图片颜色被改为黑色。
拓展任务:
- 用二进制编辑器修改《植物大战僵尸》的存档文件,能跳到指定关卡。
- 用二进制编辑器修改《植物大战僵尸》的存档文件,让游戏账户有指定数量的金币。
- 通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[迷你游戏]选项。
- 通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[生存模式]选项。
创建用户Name1
创建用户后自己玩了一关,存档是1-2:
选择显示隐藏的项目,然后可以看到ProgramData文件夹,进入之后点击PopCap Games,打开里面的PlansVsZombies中的userdata
这里user3是新创建的,用进制编辑器打开user3.dat文件:
经过测试发现00行04列表示的是关卡(植物大战僵尸每个大关卡有10个小关卡):
01:转换为十进制是1,代表1-1关
02:转换为十进制是2,代表1-2关
0c:转换为十进制是12,代表2-2关
以此类推:可以计算对应关卡的二进制值,设定游戏跳到2-2关:
游戏成功变为2-2关卡。
通过对比发现第一行第八列控制金币的值(初始时0):
修改后:
02转换为十进制是2,这里的金币数为参数乘以10;
自测:
- 110101010001转十六进制是多少?
答:d51 - 101011.101011对应的十进制数是多少?
答:43.671875 - 常见的音频编码格式有哪些?
答:MP3/MP3 Pro格式,WMA格式,MPEG格式,AAC格式等。 - 常见的视频编码格式有哪些?
答:H264 , VP8, AVS, RMVB等 - 一个尺寸8×8大小的png全黑图片前四个字节的十六进制值是什么?
答:89 50 4e 47 - 如果要提供一个实时的流媒体服务器,除了ffmpeg,还需要使用哪个组件?
答:ffserver