使用LNUM补丁在Lua中对int64进行计算。

我目前正在开发一个Lua项目,用于对64位整数进行计算。我的第一反应是在luaconf.h中将LUA_NUMBER切换为int64_t。在这之后并没有起作用,我经过了一些挖掘,发现了LNUM补丁,它似乎提供了我需要的功能。

我通过运行以下命令使用LNUM补丁重建了Lua:

patch < ../../lua512_numbers.patch

运行此命令并重新运行代码后,我仍然无法对如2^62 + 1这么大的数字执行数学运算。(我也无法通过与lnum补丁一起提供的test.lua)

我在以下每个位置替换了我的luaconf.h-但并没有任何区别。_LNUM打印出double。

注意:我已尝试过用5.1.2、5.1.3、5.1.5版本的Lua进行测试。

#define LNUM_FLOAT
#define LNUM_INT64

# define LUA_INTEGER    long long
# ifdef _MSC_VER
#  define lua_str2ul    _strtoui64
# else
#  define lua_str2ul    strtoull
# endif
# define LUA_INTEGER_SCAN "%lld"
# define LUA_INTEGER_FMT "%lld"
# define LUA_INTEGER_MAX 0x7fffffffffffffffLL       /* 2^63-1 */
# define LUA_INTEGER_MIN (-LUA_INTEGER_MAX - 1LL)   /* -2^63 */

# define LUA_NUMBER         float
# define LUA_NUMBER_SCAN    "%f"
# define LUA_NUMBER_FMT     "%g"

我还尝试直接将LUA_NUMBERLUA_INTEGER设置为LNUM_FLOATLNUM_INT64

我认为我误解了补丁/Lua的工作方式,并希望得到有关如何使用无符号或有符号INT64的任何指导。

点赞