lua二進制操做函數

  因爲 Lua 腳本語言自己不支持對數字的二進制操做(例如 與,或,非 等操做),MUSHclient 爲此提供了一套專門用於二進制操做的函數,它們都定義在一個「bit」表中,使用時只要requre 「bit」便可。函數

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

  此函數須要兩個整數做爲參數。第一個參數能夠帶有符號,是被覺得的數,第二個參數是一個無符號整數,是向右移動的位數。在覺得過程當中,第一個參數的符合始終會被保留。字符串

  例如:string

  print (bit.ashr (-1024, 6)) --> -16it

bit.band - 按位「與」運算

  此函數須要一個或多個無符號整數做爲參數,返回全部參數執行按位「與」運算後的結果。cli

  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

相關文章
相關標籤/搜索