首頁(yè) 游戲

Minecraft指令手冊(cè)

第一百三十六章 真正深入了解NBT-2

Minecraft指令手冊(cè) 你好MC 1644 2020-10-18 23:26:57

  在上一章的時(shí)候,我們知道了NBT一共有14種數(shù)據(jù)類型:

  [字符]

  字符串(String)

  [數(shù)值]

  {整形}

  字節(jié)型(Byte:B)

  短整型(Short:S)

  整型(Int:I)

  長(zhǎng)整型(Long:L)

  {浮點(diǎn)型(小數(shù))}

  單精度浮點(diǎn)型(Float:F)

  雙精度浮點(diǎn)型(Double:D)

  [數(shù)據(jù)]

  復(fù)合標(biāo)簽(Compound)

  列表(List)

  [數(shù)組]

  字節(jié)型數(shù)組(Byte Array:[B])

  整型數(shù)組(Int Array:[I])

  長(zhǎng)整型數(shù)組(Long Array:[L])

  現(xiàn)在我們已經(jīng)深入了解了字符串(String)、字節(jié)型(Byte:B)和短整型(Short:S)。在上一章的末尾,我提到了1.13版本及以后,Mojang把附魔等級(jí)(lvl)的數(shù)據(jù)類型從Short短整形改成了Int整形。那么問題來了,什么是Int整形呢?

  Int整形是Minecraft中很常見到(注意這里)的數(shù)據(jù)類型,根本原因就在于它無特定格式,也就是不需要填寫類型字母,直接上數(shù)字就完事了。那么到底有多常見呢?如物品的耐久和損害值,類型就是Int整形。紅石比較器比較命令方塊輸出的模擬信號(hào)強(qiáng)度值類型,也是Int整形(這就是為什么紅石信號(hào)強(qiáng)度能超過15的原因)。其他的如效果持續(xù)時(shí)長(zhǎng)、MC地圖邊長(zhǎng)、紅石比較器輸出的信號(hào)強(qiáng)度等也是Int整形。

  沒錯(cuò),MC地圖只要你電腦夠好,在沒有邊界攔你的前提下,地圖理論上最大可達(dá)到2147483647×2147483647=4.611686014132420609×10^18即4611686014132420609(四百六十一京一千六百八十六兆零一百四十一億三千二百四十二萬零六百零九)個(gè)方塊。

  “MC牛逼!”(破音)

  上面這幾個(gè)例子都是MC原版的。在mod里,比如IC2的能量等級(jí)也是Int整形。

  估計(jì)你也發(fā)現(xiàn)了,上面說過MC地圖邊長(zhǎng)是Int整形,而MC地圖的極限又是2147483647×2147483647,所以——Int整形的上限是2147483647。

  而我相信你在了解完字節(jié)型和短整形的值范圍后,已經(jīng)得出了一個(gè)數(shù)值范圍的公式:

  -(n+1)~n(n為該值類型的上限,且n≠0)或

  -(2??1)~2??1-1(n為該值類型的2進(jìn)制位數(shù))

  把Int整形值上限2147483647套進(jìn)去,你就可以得到Int整形的數(shù)值范圍了:

  -21,4748,3648~21,4748,3647「-(231)~231-1」(4字節(jié))

  實(shí)際上Int整形的內(nèi)容也就只有這個(gè)數(shù)值范圍,可以說是最簡(jiǎn)單的了。

  總的來說,Int整形的特性就是:

  1.數(shù)值范圍為-21,4748,3648~21,4748,3647「-(231)~231-1」(整數(shù))

  2.占用空間4字節(jié)

  真的是灰常簡(jiǎn)單呢!

  三個(gè)整形都完了,就剩下最后一個(gè)了:

  長(zhǎng)整型(Long:L)

  Long長(zhǎng)整型,顧名思義,就是一串很長(zhǎng)很長(zhǎng)很長(zhǎng)的整數(shù),實(shí)際上也確實(shí)如此。它的類型字母為L(zhǎng)(注意是大寫),當(dāng)然用“l(fā)”(L的小寫,不是i的大寫)也是可以的。

  那么Long長(zhǎng)整形到底有多長(zhǎng)呢?我們知道,最短的字節(jié)型占用1字節(jié),然后是占用2字節(jié)的短整形,接著是4字節(jié)的整形,可以發(fā)現(xiàn)占用字節(jié)數(shù)是翻著倍上去的,所以我們的Long長(zhǎng)整形其占用空間達(dá)到了8字節(jié)!即64位。而64位的二進(jìn)制最大值是:

  10000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000

  我們可以將其轉(zhuǎn)化為10進(jìn)制:

  1×2?3+0×2?2+0×2?1+.......+0×21+0×2?

  =2?3+0+0+0+0+0+......+0+0

  =2?3

  既然8字節(jié)空間可存儲(chǔ)的最大值為2?3,那么我們的Long長(zhǎng)整形其值范圍就是:

  -(2?3)~2?3-1

  或許這樣子用次方表達(dá)表達(dá)不出來Long長(zhǎng)整形有多長(zhǎng),那么接下來,我們就要把這個(gè)次方化為一個(gè)正常的數(shù)字,坐穩(wěn)了!

  所以我們的Long長(zhǎng)整形其范圍就是:

  -922,3372,0368,5477,5808~922,3372,0368,5477,5807

  (負(fù)九百二十二京三千三百七十二兆零三百六十八億五千四百七十七萬五千八百零八至九百二十二京三千三百七十二兆零三百六十八億五千四百七十七萬五千八百零七)

  真夠長(zhǎng)的,都是2147483648的平方(4611686014132420609)的兩倍。

  這下子懂了吧?,F(xiàn)在我們舉個(gè)例子。

  舉什么例子好呢?好像因?yàn)檫@家伙太長(zhǎng)導(dǎo)致很少用到哎!這可咋辦?

  沒錯(cuò)!實(shí)際上,Long長(zhǎng)整形在Minecraft并不常用,你很難找到一個(gè)值為L(zhǎng)ong長(zhǎng)整形的標(biāo)簽。你與Long長(zhǎng)整形最近的一次接觸,估計(jì)就只有世界的種子了吧(MC種子的值是Long長(zhǎng)整形,你填的字母或其他的特殊符號(hào)都會(huì)在世界生成時(shí)轉(zhuǎn)化為數(shù)字)。

  那么這樣子吧。假設(shè)有這么一個(gè)標(biāo)簽:The_death_of_Gu_Zhenxing,作用就是存儲(chǔ)著古振興死的次數(shù),其值為L(zhǎng)ong長(zhǎng)整形。假設(shè)古振興已經(jīng)死了8,388,608(223)次,那么其值就是:

  {The_death_of_Gu_Zhenxing:8388608L}

  懂了吧?

  所以,Long長(zhǎng)整形的特性就是:

  1.值范圍是-922,3372,0368,5477,5808~922,3372,0368,5477,5807「-(2?3)~2?3-1」(整數(shù))

  2.占用空間8字節(jié)

  3.類型字母為L(zhǎng)和l(L的小寫)

  嗯,這就是整形的四個(gè)類型。由于作者時(shí)間的關(guān)系,這一章就到這了。下一章我們將會(huì)繼續(xù)了解浮點(diǎn)數(shù)以及更多的東西。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁(yè)
返回書頁(yè)
指南