实际上Byte类型值不仅仅是个数值,它还有另一种值:
布尔值(false|true)
没错,Byte值也是布尔值,这个布尔值一般是数字形式的:
1和0
也有些情况下是true和false。
当为字母形式时,就不用填最后的b了,只需要类似于字符串那样加上引号就可以了(好像不加也可以)。
这就是Byte类型。按理来说一个普通的MC指令教程说到这就可以了,但这本书并不普通。所以接下来我们要研究一个问题:
为什么这个值类型叫做“字节型”呢?
其实答案很简单。刚才的数值范围大家也都知道,是:
-128~127,
也就是-(2?)~2?-1(二的七次幂的相反数到二的七次幂减一的差)
我们的一个字节,也就是:
8bit(8个二进制数字)
字节型数值的绝对值最大值是128,即2?,转换成二进制就是,刚好一字节。
这就是字节型这个名称的由来,是不是灰常简单?
总之,字节型(Byte:B)的特性就是:
1.值为整数或布尔值
2.当值为数值时,数值范围为-128~127
3.当值为数值时,需要在值最后加上类型字母b
4.占用空间只有1字节
(唉,为什么最大值不是,即511?)
(有补码懂不懂?有补码才能区分正负!)
比字节型范围稍大的短整型(Short:S),在上面就有提到其也是有类型字母的。而这个类型字母就是:s,具体这个放在哪里大家都应该知道的。
短整形的数值范围是:
-~「-(21?)~21?-1」(占用2字节)
是不是很熟悉?没错,1.13版本以下附魔的等级值就是短整形,所以当时的附魔最大等级才是。
所以我们可以根据这个附魔的标签来举个例子:
{ench:[{lvl:s,id:18s}]}——这就是短整形的最大值,也就是附魔等级的最大值
{ench:[{lvl:-s,id:18s}]}——这就是短整形的最小值,也是附魔等级的理论最小值(LV.-?)
(细心的朋友可能注意到了,1.13以前的id其值也是短整形)
到了1.13以后,情况就不一样了。Mojang把lvl值类型改成了int整形,附魔的上限也就升级到了。但实际上,在新版本,lvl其值是int和Short混用的。具体是这样的:
用附魔台附魔或战利品表生成的,是Short短整形,但是读取时是按照int整形的时候来读取的。其他的就直接是int了。
只不过这些东西,我们以后再说。现在回到正题。
Short的内容就是这么多。总的来说,Short短整形的特性就是:
1.值范围是-~(整数)
2.类型字母为s
3.占用空间2字节
OK NBT标签的内容就暂且到这里了,我们下一章再见。
(补码是什么啊?)
(简单来说,这八位的第一位是表示正负号,0为正,1为负。所以负值最小可以到-128即,正值最大可以到127即0。)
(哦懂了懂了)
(不光byte有补码,Minecraft的十四种NBT数据类型中,除了字符串、复合标签、列表这三样,其他都有补码)
(对了,byte作为布尔值时是没有补码的。实际上在Java语言中,byte数值没有布尔值这个用途,表示布尔值的是一个叫boolean的数据类型,Minecraft的NBT中Mojang把boolean的功能合并到了byte中,所以这就是为什么byte还有一个挺突兀的布尔值功能)