Index: 残局文料/lua_lib/常用库.lua ================================================================== --- 残局文料/lua_lib/常用库.lua +++ 残局文料/lua_lib/常用库.lua @@ -187,6 +187,13 @@ --~ 左数 --~ 右数 function d.位和(o1, o2) return bit.band(o1, o2) end +do + local double_pointer = ffi.new("double[1]") + local uint64_pointer = ffi.cast("uint64_t*", double_pointer) + function d.double_to_uint64(o1) + + end + end return d Index: 残局文料/残局改名.lua ================================================================== --- 残局文料/残局改名.lua +++ 残局文料/残局改名.lua @@ -67,15 +67,16 @@ end end --~ 卡编 function d.取卡数据(o1) for o1_4 in 数据库:nrows("select * from datas where id = " .. o1) do - if o1_4.setcode > 0xffffffff then - ffi = require("ffi") - print(bit.tohex(o1_4.setcode, 16), o1_4.setcode, o1_4.setcode == 36592129229979791, bit.tohex(bit.rshift(o1_4.setcode, 31)), bit.tohex(bit.band(o1_4.setcode, 0xf)), string.format("%x", 36592129229979791), bit.tohex(math.fmod(36592129229979791, 0xffff + 1)), math.fmod(36592129229979791, 0xffff + 1), ffi.new("uint64_t[1]", 36592129229979791)[0], tostring(36592129229979791) == tostring(o1_4.setcode), math.modf(36592129229979791 / (0xffff + 1)), bit.tohex(bit.band(o1_4.setcode - 4, ffi.new("uint64_t[1]", 0xffff)[0]))) - else - end + --~ if o1_4.setcode > 0xffffffff then + --~ ffi = require("ffi") + --~ print(bit.tohex(o1_4.setcode, 16), o1_4.setcode, o1_4.setcode == 36592129229979791, bit.tohex(bit.rshift(o1_4.setcode, 31)), bit.tohex(bit.band(o1_4.setcode, 0xf)), string.format("%x", 36592129229979791 - 36592129229979791), bit.tohex(math.fmod(36592129229979791, 0xffff + 1)), math.fmod(36592129229979791, 0xffff + 1), ffi.new("uint64_t[1]", 36592129229979791)[0], tostring(36592129229979791) == tostring(o1_4.setcode), tonumber(tostring(o1_4.setcode)) == 36592129229979791, math.modf(36592129229979791 / (0xffff + 1)), bit.tohex(bit.band(o1_4.setcode - 4, ffi.new("uint64_t[1]", 0xffff)[0]))) + --~ print(string.format("%x", 36592129229979791 - 5)) + --~ else + --~ end return o1_4 end end --~ 文 function d.局筛卡编(o1) @@ -107,10 +108,16 @@ local k1, k2 local k1_0 --~ 字段对 k1_0 = {} for o1 = 1, #o1_0 do + --~ 字段数 + k1 = f.double_to_uint64(o1_0[o1].setcode) + if k1 > 0xffff then + k1 = k1 - 1 + else + end --~ for o2 = 1, 11112222 do --~ 大字段号 --~ k1 = f.位和(o1_0[o1].setcode, 0xffff) --~ k2 = --~ end