lua 二進位制函式使用

2022-03-07 17:28:09 字數 1912 閱讀 4626

由於 lua 指令碼語言本身不支援對數字的二進位制操作(例如 與,或,非 等操作),mushclient 為此提供了一套專門用於二進位制操作的函式,它們都定義在乙個「bit」表中,使用時只要requre 「bit」即可。

bit.ashr - 帶符號的按位右移

此函式需要兩個整數作為引數。第乙個引數可以帶有符號,是被以為的數,第二個引數是乙個無符號整數,是向右移動的位數。在以為過程中,第乙個引數的符合始終會被保留。

例如:print (bit.ashr (-1024, 6)) --> -16

bit.band - 按位「與」運算

此函式需要乙個或多個無符號整數作為引數,返回所有引數執行按位「與」運算後的結果。

bit.band(a,b)即是a 和 b的按位與;

例如:print (bit.band (18, 2)) --> 2

print (bit.band (15, 7, 3)) --> 3

print (bit.band (17, 10, 4)) --> 0

bit.band(a,b,c)是a b c的互相按位與;

bit.bor - 按位「或」運算

此函式需要乙個或多個無符號整數作為引數,返回所有引數執行按位「或」運算後的結果。

例如:print (bit.bor (1, 2, 8)) --> 11

bit.mod - 取模函式 (得到整除後的餘數)

此函式需要兩個整數作為引數。函式結果是兩個數整除之後的餘數。

例如:print(bit.mod (17, 4)) --> 1

bit.neg - 按位「非」運算

此函式需要乙個無符號整數作為引數,返回這個引數執行按位「非」運算後的結果。

例如:print (bit.neg (1)) --> 4294967294

bit.shl - 按位左移

此函式需要兩個無符號整數作為引數。第乙個引數是被移位的數,第二個引數是向左移動的位數。

例如:print (bit.shl (4, 6)) --> 256

bit.shr - 按位右移

此函式需要兩個無符號整數作為引數。第乙個引數是被移位的數,第二個引數是向右移動的位數。

例如:print (bit.shr (1024, 6)) --> 16

bit.tostring (n, base) - 把乙個數字轉換為字串

把乙個數字根據指定的基數轉換為字串(大寫形式)base 產生是可選的,預設為 10,其有效範圍為 2 - 36。數字的小數部分會被忽略. 被轉換的數字可以是負數,轉換後會保留 "-" 符號。

例如:print (bit.tostring (45035996273, 16)) --> a7c5ac471

bit.tonumber (s, base) - 把字串轉換為乙個數字

把乙個字串形式的數字轉換為相應的數字。和標準 lua tonumber 函式不一樣的是此函式可以處理高達 52 bit 的數字(lua 預設的函式只能處理 32 bit 的數字)。

例如:print (bit.tonumber ("a7c5ac471", 16)) --> 45035996273

base 引數是可選的,指明了轉換的基數,預設為 10。base 的有效範圍是 2 - 36。此函式不支援小數,也不支援指數表示形式的整數(例如 10.24e15)。如果一定要使用這樣的數,你只有使用 lua 自帶的 tonumber 函式了。

由於計算機對浮點數的限制,字串能轉換的數字不能超過 52 bit,例如:十六進製制 fffffffffffff (十進位制 4503599627370495)。

字串開始的空白字元會自動被忽略,實際數字前面可以有乙個 + 或者 - 號。

bit.xor - 按位「異或」運算

此函式需要乙個或多個無符號整數作為引數,返回所有引數執行按位「異或」運算後的結果。

例如:print (bit.xor (15, 1)) --> 14

lua二進位制操作函式

由於 lua 指令碼語言本身不支援對數字的二進位制操作 例如 與,或,非 等操作 mushclient 為此提供了一套專門用於二進位制操作的函式,它們都定義在乙個 bit 表中,使用時只要requre bit 即可。bit.ashr 帶符號的按位右移 此函式需要兩個整數作為引數。第乙個引數可以帶有符...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

二進位制處理函式

unsigned const stat zero 0x0008 unsigned const stat one 0x0002 unsigned const stat two 0x0004 unsigned const stat three 0x0008 檢測位有1位是1就返回true templat...