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进制
16进制
在这里我将第一个C改为A,第三个D改为Z。
16进制
更改

2.2利用Hex Editor Neo修改图片

2.2.1截取8*8的全白PNG图片

图片
由于8*8太小了难以显示,所以我在图片查看器中放大了300%。

2.2.2在Hex Editor Neo中打开图片

png
这便是8*8的纯白PNG图片。

在最开始的8个字节表示文件格式的定义。8
对于以上在我的另一篇博客里: link.

根据编码规则对十六进制进行改变,观察其变化:

对于这一位将ff更改为00.
ff
可见图片由白色变为了灰色。
black


任务三:拓展任务-修改游戏存档:

  1. 用二进制编辑器修改《植物大战僵尸》的存档文件,能跳到指定关卡。
  2. 用二进制编辑器修改《植物大战僵尸》的存档文件,让游戏账户有指定数量的金币。
  3. 通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[迷你游戏]选项。
  4. 通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[生存模式]选项。

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便可解锁

任务四:自测

  1. 110101010001转十六进制是d51.
  2. 101011.101011对应的十进制数是43.671875.
  3. 常见的音频编码格式有MP3/MP3 Pro格式,WMA格式,MPEG格式,AAC格式等.
  4. 常见的视频编码格式有H264 , VP8, AVS, RMVB等.
  5. 一个尺寸8×8大小的png全黑图片前四个字节的十六进制值是89 50 4e 47.
  6. 如果要提供一个实时的流媒体服务器,除了ffmpeg,还需要使用ffserver.

以上是关于C1-见习工程师能力认证-01的主要内容,如果未能解决你的问题,请参考以下文章

C1-见习工程师能力认证-02

C1-见习工程师能力认证-03

C1-见习工程师能力认证-03

C1-见习工程师能力认证-03

C1见习工程师认证——C1任务01—进制与信息编码——2021.5.6

C1见习工程师认证——像素化代码学习——2021.5.5