Luajit

服务端和客户端均支持lua脚本,采用LuaJIT引擎。去掉了os库,不支持tail call,客户端还去掉了io、file、package库。增加了少量基础功能。 全部展开

整数展开

  • + integer = int(number)

    检查number是否为整数,并且在54bit补码范围内,返回此数。
    检查无效的,抛出错误。

  • + integer = int32(number)

    检查number是否为整数,并且在32bit补码范围内,返回此数。
    检查无效的,抛出错误。

  • + integer = toint(number, round)

    取整,round<=-1向下取整,round>=1向上取整,round==0.5四舍五入取整,否则向0取整。
    超出54bit补码范围的,返回54bit最大或最小整数。
    非数字且非数字字符串,返回nil。

  • + integer = toint32(number, round)

    取整,round<=-1向下取整,round>=1向上取整,round==0.5四舍五入取整,否则向0取整。
    超出32bit补码范围的,返回32bit最大或最小整数。
    非数字且非数字字符串,返回nil。

字符串展开

  • + _tostring(userdata, tostrFunc)

    如果userdata有metatable,并且没有__tostring元函数,则设置为tostrFunc。

  • + data:tobytes(from, to)

    将、<_encode>、等返回的数据转换成字节串,from为起始字节,默认1,to为结束字节,默认最后一个字节。
    返回的字节串从1字节起始,长度为tofrom + 1。

  • + data:tostr(from, to)

    将、<_encode>、等返回的数据转换成二进制字符串,from为起始字节,默认1,to为结束字节,默认最后一个字节。
    返回的字符串从1字节起始,长度为tofrom + 1。

  • + string:debase64(first, last, bytes, mode)

    解码base64字符串。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回字节串,否则返回字符串。
    mode必须为enbase64时使用的mode参数,默认'+/='

  • + string:des3de(key, from)

    返回字符串from对于key的DES3解密结果。

  • + string:des3en(key, from)

    返回字符串from对于key的DES3加密结果。

  • + string:deurl(first, last, bytes)

    解码url字符串。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回字节串,否则返回字符串。
    string.deurl('a+d+%2b+a') ==> a+d+++a

  • + string:deurl2(first, last, bytes)

    解码url字符串。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回字节串,否则返回字符串。
    string.deurl2('a+d+%2b+a') ==> a d + a

  • + string:enbase64(first, last, bytes, mode)

    base64编码字符串。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回字节串,否则返回字符串。
    mode为模式设置串,62编码为字符1,63编码为字符2,用字符3做尾部对齐,无字符3不对齐,默认为'+/=',对于一些url使用场合,可能为'-_'

  • + string:enurl(first, last, bytes)

    url编码字符串。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回字节串,否则返回字符串。

    string.enurl('a d + a') ==> a%20d%20%2B%20a

  • + string:enurl2(first, last, bytes)

    url编码字符串。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回字节串,否则返回字符串。

    string.enurl2('a d + a') ==> a+d+%2B+a

  • + string:hmacmd5(key, first, last, bytes)

    返回字符串对于key的hmac-md5。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回原始字节串,否则返回十六进制小写字符串。

  • + string:hmacsha1(key, first, last, bytes)

    返回字符串对于key的hmac-sha1。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回原始字节串,否则返回十六进制小写字符串。

  • + string:lead(substr)

    判断字符串是否以substr开头,返回bool类型。

  • + string:md5(first, last, bytes)

    返回字符串的md5。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回原始字节串,否则返回十六进制小写字符串。

  • + string:rsaprikeyde(key, from [, length] )

    返回字符串from对于key的RSA私钥解密结果。
    length可选,默认1024。

  • + string:rsaprikeyen(key, from [, length] )

    返回字符串from对于key的RSA私钥解密结果。
    length可选,默认1024。

  • + string:rsapubkeyde(key, from [, length] )

    返回字符串from对于key的RSA公钥解密结果。
    length可选,默认1024。

  • + string:rsapubkeyen(key, from [, length] )

    返回字符串from对于key的RSA公钥加密结果。
    length可选,默认1024。

  • + string:rsaverify(key, str, sign )

    返回rsa校验结果

    local s = string.rsaverify(string.debase64(pubkey), string.sha1(str, 0, -1, true), string.debase64(sign), 64)
    print(s)
  • + string:sha1(first, last, bytes)

    返回字符串的sha1。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes非nil非false,则返回原始字节串,否则返回十六进制小写字符串。

  • + string:tail(substr)

    判断字符串是否以substr结尾,返回bool类型

  • + string:to16b(first, signed)

    2字节大头字符串转换为16bit整数,first为起始字节,默认1。
    signed为nil或false,整数为无符号原码,否则为补码。

  • + string:to16l(first, signed)

    2字节小头字符串转换为16bit整数,first为起始字节,默认1。
    signed为nil或false,整数为无符号原码,否则为补码。

  • + string:to32b(first, signed)

    4字节大头字符串转换为32bit整数,first为起始字节,默认1。
    signed为nil或false,整数为无符号原码,否则为补码。

  • + string:to32l(first, signed)

    4字节小头字符串转换为32bit整数,first为起始字节,默认1。
    signed为nil或false,整数为无符号原码,否则为补码。

  • + string:to64b(first, signed)

    8字节大头字符串转换为64bit整数,first为起始字节,默认1。
    signed为nil或false,整数为无符号原码,否则为补码。
    如果整数超过了53bit原码/54bit补码范围,抛出错误。

  • + string:to64l(first, signed)

    8字节小头字符串转换为64bit整数,first为起始字节,默认1。
    signed为nil或false,整数为无符号原码,否则为补码。
    如果整数超过了53bit原码/54bit补码范围,抛出错误。

  • + string:toDb(first)

    返回8字节大头字符串转换为64bit浮点数,first为起始字节,默认1。

  • + string:toDl(first)

    8字节小头字符串转换为64bit浮点数,first为起始字节,默认1。

  • + string:ucs(first, last, bytes)

    将utf-8字符串转换成小头ucs-2。
    first为起始字节,默认1,last为结束字节,默认-1,即字符串长度。
    bytes为'c',则返回每个ucs-2字符码,非nil非false,则返回字节串,否则返回字符串。

  • + string:ulen(first)

    返回utf8字符串长度,first为起始字节,默认1。

  • + string:utf(first, last, bytes)

    将小头ucs-2字符串转换成utf-8。
    first为起始字符,默认1,last为结束字符,默认-1,即toint(字符串长度/2)。
    bytes非nil非false,则返回字节串,否则返回字符串。

  • + string.from16b(integer, bytes)

    16bit整数转换为2字节大头字符串。
    如果整数超过了16bit原码和补码范围,抛出错误。
    如果bytes非false非nil,则返回userdata字节串

  • + string.from16l(integer, bytes)

    16bit整数转换为2字节小头字符串。
    如果整数超过了16bit原码和补码范围,抛出错误。
    如果bytes非false非nil,则返回userdata字节串

  • + string.from32b(integer, bytes)

    32bit整数转换为4字节大头字符串。
    如果整数超过了32bit原码和补码范围,抛出错误。
    如果bytes非false非nil,则返回userdata字节串。

  • + string.from32l(integer, bytes)

    32bit整数转换为4字节小头字符串。
    如果整数超过了32bit原码和补码范围,抛出错误。
    如果bytes非false非nil,则返回userdata字节串

  • + string.from64b(integer)

    64bit整数转换为8字节大头字符串。
    如果整数超过了54bit补码范围,抛出错误。
    如果bytes非false非nil,则返回userdata字节串。

  • + string.from64b(number, bytes)

    64bit浮点数转换为8字节大头字符串。
    如果bytes非false非nil,则返回userdata字节串。

  • + string.from64l(integer, bytes)

    64bit整数转换为8字节小头字符串。
    如果整数超过了54bit补码范围,抛出错误。
    如果bytes非false非nil,则返回userdata字节串。

  • + string.fromDl(number, bytes)

    64bit浮点数转换为8字节小头字符串。
    如果bytes非false非nil,则返回userdata字节串。

  • + string.fromhexucs(string)

    将类似于 "\u827e\u7433\u6d4b\u8bd51" 的ucs字符串转换成"艾琳测试1"

  • + string.xor(string1, string2)

    对两个字符串进行异或操作。

table展开

  • + dest, ok = table.append(dest, source, nometa)

    使用next函数遍历source中每个属性key和value,如果dest[key]为nil,则dest[key]=value。
    nometa非nil非false,则用rawget和rawset操作。
    返回的ok表示是否有属性添加到dest。

  • + dest, ok = table.copy(dest, source, raw)

    使用next函数遍历source中每个属性key和value,dest[key]=value。
    raw非nil非false,则用rawsetk操作,否则用tabsetk操作。
    返回的ok表示是否有属性复制到dest。
    rawsetk不会触发dest的newindex,tabsetk的话会触发dest的newindex。 不支持拷贝元表,元表需要单独设置: local dest = setmetatable(table.copy({}, source), getmetatable(source))

  • + table.binfind(arrayTable, number, first, last, howeq)

    返回index, value。
    二分查找number,first为起始下标,默认1,last为结束下标,默认#arrayTable。
    返回找到的index和arrayTable[index],或者应该插入的位置-index和arrayTable[index]。
    arrayTable必须有序。
    此查找认为nan是比infinity还大的数值,数组应将nan放在数组尾部。
    如果howeq<0,则认为查找值比相等的元素小,可用于查找第一个相等元素,如果howeq>0,则认为查找值比相等的元素大,可用于查找最后一个相等元素,其它howeq,则查找到相等元素即返回。

  • + table.duplicate(table)

    复制lua表,返回新表。

  • + table.push(dest, ...)

    将元素添加到dest中,下标从#dest+1开始,返回dest。

  • + table.pushs(dest, ...)

    将...中每个table下标1到#table的元素依次添加到dest中,下标从#dest+1开始,返回dest。

  • + table.replace(array, first, n, ...)

    删除数组元素,并插入元素。
    从下标first开始删除n个元素,然后从first下标开始插入...这些元素。
    如果first大于#array,则相当于{table.push}。
    返回数组本身。

  • + table.splice(array, first, n, ...)

    删除数组元素,并插入元素。
    返回删除的元素,其它与{table.replace}相同。

  • + table.sub(arrayTable, first, last, keepmeta)

    创建一个子数组,first为起始下标,默认1,last为结束下标,默认#arrayTable。
    返回的数组table下标从1起始,长度为last-first+1。
    keepmeta为非nil非false时,返回数组的metatable和原始数组一致。

时间展开

  • + time = _now(unit,queue)

    返回2000-1-1 0:0:0本地时区起始的整数时间。
    unit为单位,1为秒,60为分钟,0.001为毫秒,<=0.000001为微秒,以此类推,默认毫秒。
    可用于计算加速的时间,例如 MINUTE=30; _now(MINUTE)为从2000-1-1 0:0:0本地时区以来经过多少加速为30秒的分钟数。
    queue为非nil非false时,返回当前执行的队列项的计划时间,在执行期间保持不变,当前没有执行队列项,则返回nil。
    queue为nil或false时,返回当前执行的队列项的实际时间,在执行期间保持不变,当前没有执行队列项,则返回os.系统时间。

  • + time = _time(unit, timeTable)

    将timeTable年月日时分秒转换为时刻值time,只计算year,month,day,hour,min,sec,usec或msec属性。
    unit为时刻值的单位,1为秒,60为分钟,0.001为毫秒,<=0.000001为微秒,以此类推,默认nil为毫秒。
    过大范围的timeTable属性可能无法正确转换。

  • + time = os.now(unit)

    返回2000-1-1 0:0:0本地时区起始的整数时间。
    unit为单位,1为秒,60为分钟,0.001为毫秒,<=0.000001为微秒,以此类推,默认毫秒。
    可用于计算加速的时间,例如 MINUTE=30; os.now(MINUTE)为从2000-1-1 0:0:0本地时区以来经过多少加速为30秒的分钟数。

  • + time = os.utc(unit)

    返回2000-1-1 0:0:0 UTC起始的整数时间。
    unit为单位,1为秒,60为分钟,0.001为毫秒,<=0.000001为微秒,以此类推,默认毫秒。
    可用于计算加速的时间,例如 MINUTE=30; os.utc(MINUTE)为从2000-1-1 0:0:0 UTC以来经过多少加速为30秒的分钟数。

  • + timeTable = _time(timeTable, time, unit)

    将时刻值time转换为timeTable的年月日时分秒属性,
    如{ year=2012, month=12, day=21, hour=12, min=21, sec=12, msec=212, usec=212011, wday=星期(0是周日) }。
    unit为时刻值的单位,1为秒,60为分钟,0.001为毫秒,<=0.000001为微秒,以此类推,默认毫秒。
    如果time和unit单位不匹配,则可以实现加速计算,如time({}, now(30), 60)加速一倍,精度达30秒, 返回{year=2053,month=6,day=2,hour=22,min=42,sec=0,msec=0,usec=0,wday=1}。
    过大范围的time或unit可能无法正确转换。

Debug展开

  • + debug.logalloc(number)

    记录内存申请信息。

    debug.logalloc(300) -- start to record, max 300 records
    debug.logalloc(0) -- stop
    debug.logalloc(1) -- dump
问题反馈(登录才可以发表哦!)