由于 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二进制操作函数的更多相关文章

  1. (转) Lua string 操作函数

    本文转自: http://www.cnblogs.com/newlist/p/3649388.html table.keys 返回指定表格中的所有键. 格式: keys = table.keys(表格 ...

  2. lua 二进制函数使用

    由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个"bit"表中,使用时 ...

  3. Delphi文件操作函数

    文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...

  4. Lua中的函数

    [前言] Lua中的函数和C++中的函数的含义是一致的,Lua中的函数格式如下: function MyFunc(param) -- Do something end 在调用函数时,也需要将对应的参数 ...

  5. mysql常用字符串操作函数大全,以及实例

    今天在论坛中看到一个关于mysql的问题,问题如下 good_id     cat_id12654         665,56912655         601,4722 goods_id是商品i ...

  6. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  7. C-I/O操作函数详解

    EOF: End Of File, 文字流结尾, 这里的文字流可以是文件(file), 也可以是标准输入(stdin), 它的值在任何可能出现的字符之外(-1) 先列出三种基本类型操作函数 这里面返回 ...

  8. C语言对文件的操作函数用法详解1

    在ANSIC中,对文件的操作分为两种方式,即: 流式文件操作 I/O文件操作 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef str ...

  9. lua和C++交互的lua栈操作——以LuaTinker为例

    一. -- C++类注册函数(LuaTinker) 的lua栈操作: -- lua栈内容(执行到pop语句) 栈地址 <--执行语句 space_name[name] = t1 -- (2b8) ...

随机推荐

  1. 动态加载js文件

    由于最近在弄echarts,关于地图类的效果,但是全国地图整体的js文件太大了,加载很耗费资源,所以要根据不同省份加载不同地区的js地图, 于是就想的比较简单, var script = docume ...

  2. Python GUI编程--Tkinter

    今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...

  3. mysql注入读写文件

    mysql <5.0 读文件:load_file() sql-shell select load_file(''); d:/www/xx/index.php /home/webroot/.... ...

  4. 1.本周的作业请参照此文:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html 制定本组项目的GitHub版本更新流程---答题者:徐潇瑞

    首先,介绍一下gitflow,它是最早诞生.并得到广泛采用的一种工作流程.如果采用git flow开发流程,那么项目存在两个常设分支,一个叫主分支master,另一个叫开发分支develop.mast ...

  5. Win7 64下Visual C++ 6.0不兼容

    Win7 64下Visual C++ 6.0不兼容 安装VSE6.0: 1.运行setup.exe安装程序,会弹出如下的的 程序兼容性助手 提示框,这个是Win7在警告用户vc6存在兼容性问题:此程序 ...

  6. 2016-11-15mysql优化笔记

    1.mysql连接数:MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,连接数少的话,在大并发下连接数会不够用,会有很多线程在等待其他连接释放, ...

  7. 数据库表中存在Text类型的属性时,写sql语句时需要注意喽!

    之前,习惯性地写查询语句时,查询条件用“=”判断.今天写程序的时候,查询时突然报了一个错误:数据类型text 和varchar 在equal to 运算符中不兼容.查看了一下数据库发现,其中有一个属性 ...

  8. 个人博客作业week3——案例分析

    1.调研 & 评测 1.我的用户体验 win10应用版: Bug1:例句经过翻译与其给出的译文相差太多 上图是应用给出的每日一句及其译文. 将其复制入翻译,就可以看出翻译过后的句子一点也不通顺 ...

  9. 创建Xml文件与修改Xml文件

    /// <summary> /// 修改节点 /// </summary> /// <param name="user">UserSafe 实体 ...

  10. CAS 4.0.0RC 配置通过数据库认证用户登录

    配置通过数据库认证用户登录 打开webapp\WEB-INF目录下的deployerConfigContext.xml,替换 <bean id="primaryAuthenticati ...