lua二進制操作函數


  由於 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM