C1-见习工程师能力认证-01
Posted 洛尘₀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C1-见习工程师能力认证-01相关的知识,希望对你有一定的参考价值。
任务一:用『0』和『1』绘图
1.1.通过2进制『0』和『1』绘制喜欢的图案
Image width:9
Image height: 6
选择进制为:Binary
-----呈现的效果图
1.2.绘画出自己的昵称
Image width:20
Image height: 20
选择进制为:Binary
1.3.彩色像素
Image width:7
Image height: 6
Bits per pixel: 3
选择进制为:Binary
1.4.计算机存储图片文件的底层原理
图像文件存储的都是每一个像素对应的颜色值。
1、图片文件有两种存储像素数据的格式。
对于一个16777216(真彩色)的图像,一个像素的颜色可以用24位数据表示。
256色的图像可以用调色板对颜色的信息进行编码,一个像素的值对应的是调色板的索引,而不是直接对应一个像素的颜色,调色板的索引映射为像素的颜色。
2、以一百万个像素,256种颜色的BMP文件在电脑上的存储为例。这个文件包括一个十四字节的文件首部,一个四十字节的信息首部,一个1024字节的颜色表,一兆字节的位图数据。文件首部的前两个字节由字符BM组成,还包括了文件长度和位图数据在文件中的起始位置。
3、文件的信息首部包含了图像的高、宽、颜色数等非图形数据。这个图像共有一百万个像素,一个像素需要八位的颜色信息,文件的这一部分的长度是一百万个字节,字节排放的顺序是自左到右从图像的最下面那行开始,这个文件的总大小是1001078字节。
作者:Alone
来源:知乎
任务二:掌握进制编辑器
2.1.修改文本内容
2.1.1建立一个记事本并在记事本里输入CSDN这句话。
2.1.2将建立的txt文件在Hex Editor Neo中打开
显示的是16进制的内容,对于二进制或者其他的进制的可以在编辑器内右击
在这里我选择16进制
在这里我将第一个C改为A,第三个D改为Z。
2.2利用Hex Editor Neo修改图片
2.2.1截取8*8的全白PNG图片
由于8*8太小了难以显示,所以我在图片查看器中放大了300%。
2.2.2在Hex Editor Neo中打开图片
这便是8*8的纯白PNG图片。
在最开始的8个字节表示文件格式的定义。
对于以上在我的另一篇博客里: link.
根据编码规则对十六进制进行改变,观察其变化:
对于这一位将ff更改为00.
可见图片由白色变为了灰色。
任务三:拓展任务-修改游戏存档:
- 用二进制编辑器修改《植物大战僵尸》的存档文件,能跳到指定关卡。
- 用二进制编辑器修改《植物大战僵尸》的存档文件,让游戏账户有指定数量的金币。
- 通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[迷你游戏]选项。
- 通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[生存模式]选项。
3.1.下载免安装的植物大战僵尸中文版
下载地址: 植物大战僵尸
提取码:4i37
3.2.修改游戏存档
3.2.1.跳过关卡
选择显示隐藏的项目,然后可以看到ProgramData文件夹,进入之后点击PopCap Games,打开里面的PlansVsZombies中的userdata
在没有创建用户的时候,是以下效果
在进入游戏后,创建用户名为:make
在userdata文件中可以看到生成了user.dat和users.dat的俩个文件,这代表了我们新创建的用户——make。
我们先试玩一下,在冒险模式里先玩一关。
在试玩之后可以看到关卡变成了1-2.
现在利用Hex Editor Neo打开user1.bat文件
在这里可以看到00行04列现在是02,我猜测一下这里代表的是关口,因为这里是16进制,我先将此文件更改为10进制显示。
将00行04列更改为9.
然后将植物大战僵尸重新打开可以看见,关口由1-2成功的变成了1-9.
所以修改这里是成功的。
因为植物大战僵尸每个大关卡有10个小关卡:
对于16进制来看:
01:转换为十进制是1,代表1-1关
02:转换为十进制是2,代表1-2关
09:转换为十进制是09,代表1-9关
1e:转换为十进制是30,代表3-10关
以此类推:可以计算对应关卡的二进制值,设定游戏跳到3-10关:
在进入游戏后发现是跳关成功。
注意:有一个问题,就是虽然跳关成功了但是你的植物并没有在图鉴出现
但是并不影响你的游戏体验,在本关中所用到的植物会自动给予你。
3.2.2.获取指定数量的金币–无限金币
同时可以看见我们的金币变为了620,这可以在后面和user1中进行数值对比。
(在游戏结束的时候奖励了200,所以金币变成了920)
通过对比发现00行08列变成了5c,转化为10进制为92
可以猜想在游戏里是按1:10进行兑换的,意思就是92对应游戏里的920金币。
在这里我们更改5c为ff(就是十进制的92变成255)
再次进入游戏查看。
可以看到金币变成了2550金币,这说明我们的更改是成功的。
现在我们开始实现无限金币,将这里更改为最大值。
在更改的时候我发现,在00行08列所允许的最大值为255.
那如何实现比这个还大的值呢。
我将关卡更改为1e我们继续上一关,因为上一关给的金币比较多一点。
继续玩游戏。
可以看到金币变成了3360,利用Hex Editor Neo再次打开user1.bat文件
与上次做对比发现00行09列变成了01,我们知道08列是1:10,3360-500=2860.
猜想一下可能是09列是1:2860的金币汇率。
我们将08列改为0,09列为01试试看。
可以看到金币在(08列为04)(09列为01)的情况下变成了2600.
说明我们的猜想不正确,09列的金币汇率为1:2560.
现在我们更改08列为ff,09列为ff,看一下是否达到了最大值金币。
看这个情况应该还没有,猜测一下应该是在0a列进行变动,金币汇率会更高。
尝试更改0a列为ff.
可以看到金币变为了167,772,150 基本满足了我们对于无限金币的要求。
3.2.3.解锁『迷你游戏』选项
在没有对比的情况下我们只能一个个试了,将关卡选到最后一关。
在查阅资料可知,植物大战僵尸一共50关。50的十六进制为32
同时记录各数值,除了如下俩张表剩余全为00。
费了我20分钟终于通关了。
在通关之后可以看见其他模式都可以使用了
但是我们要清楚是哪儿里的数据改变了。
所以我们利用Hex Editor Neo再次打开user1.bat文件
可以看到在0c列变成了01,我们将0c列的01更改为00.
查看是否是这里的变化影响了解锁的程度。
通过更改后可知,的确是0c这列影响解锁的程度。
3.2.4.解锁『生存模式』选项
0c这列解锁将00更改为01便可解锁
任务四:自测
- 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.
以上是关于C1-见习工程师能力认证-01的主要内容,如果未能解决你的问题,请参考以下文章