※16进制的一些常用知识
随着脚本的深入,越来越多的数字和信息都需要依赖于16进制的知识,所以我特地加了一节,用来说说16进制的事.
首先,16进制是一种类似于10进制的计数方法.相比于10进制,16进制是2进制的衍生产品,它更接近于真实的CPU计算.使用16进制可以给电脑运算带来不可言表的便利.
在GBA平台上,为了方便,所有的游戏数据都以16进制进行储存、计算,PM也是一样的.
大家可能知道一些金手指,100级PM的金手指中,一定带着64吧?金手指就是手动将数值写进内存,因为内存中充满了16进制的数据,因此100级这个数据也必须写作16进制形式,即64.
100怎么会变成64呢?
16进制以16个字符作为数字,除去1,2,3,4,5,6,7,8,9,0之外,还加入了A,B,C,D,E,F.所以在16进制中,3F是数字,EF也是数字.
因为人的大脑长期习惯于10进制,所以要在16进制与10进制之间自由转化还是比较有难度的,如果大家想快速转化,可以借助Windows自带计算器的科学型.
现在不难理解100=64了吧?
不过如果在任何场合下都直接写16进制数字,会引起误解.为了更加清楚,我们这样写16进制数:0x64或者&h64(在英文中,hex就是16进制的意思).
最后,就是16进制长串变短串了.
在Pokescript中,未被编译的命令一旦要写入数值,就必须一个字节一个字节的写,这样,16进制的长串,如0x13EF,显然就没法写进一个字节(一个字节只允许写0x00~0xFF,也就是0~256).
在16进制中,短串数字的排列必须遵从一定的规则才可以被识别,那就是"高位存高数,低位存低数".怎么说呢,比如对于0x13EF,首先切分为0x13,0xEF,紧接着再进行排序,0xEF 0x13,这就是最终结果了.
在教程中,一旦提到倒序,就是这么个意思.另外对于共有奇数位的数字时,从后向前分割,最前处补0,例如:0x1EF→0xEF 0x01.有些地方可能要求其体积为两个字节,而对于0x19这样的单字节数字怎么办呢?我们直接补写一个0x00,合起来就是0x19 0x00.
(注:凡是涉及道具、PM等可能含有大量数字的参数,一般都为2个字节的容量;而大地图中NPC的形象这种数字容量小的参数,一般只有1个字节)
现在,基本上和16进制有关的知识都简略的说到了.
注:以上关于16进制的知识都是我个人的理解,如果我的理解有问题,请及时告诉我,以免误人子弟.
欢迎光临 口袋社区-Poke The BBS (https://ww.poketb.com/) | Powered by Discuz! 6.1.0F |