我想在Lua中翻译以下代码段:
...
this.attributes.healthscores.scores['swollen'].score = swollenScore;
this.attributes.healthscores.timestamp = Date.now();
this.response.speak("Health Scores Recorded");
...
它会打印原始号码: 1541144871000
答案 0 :(得分:1)
如果您安装bigint,则此版本可用于lua 5.2:
local bigint = require "bigint"
function toLong(s)
ret = bigint:new(0)
for i=1,string.len(s),1 do
-- (leftshift(8) is just like times-256, but faster)
ret = ret:leftshift(8) + bigint:new(string.byte(s, i))
end
return ret
end
在lua 5.2之前,不支持“ \ xAB”样式的语法,但是对于ASCII大写字母A,您可以使用“ \ 65”之类的小数。
顺便说一句,您可以这样做而无需bigint,例如:
function numLong(s)
ret = 0
for i=1,string.len(s),1 do
ret = (ret * 256) + string.byte(s,i)
end
return ret
end
最大的区别在于,bigint将表示任意大的数字,而在Lua中默认情况下,正常数字值是浮点型,并且对实际可用的位数具有精度限制(尽管在我的机器上,这两种表示形式我在测试您的具体情况时也是如此)。
那是说:如果您需要任意大数字表示,请使用bigint或发疯。
哦,顺便说一句:您确实意识到在计算数字时使用的是big-endian(或“网络字节顺序”),对吗?请小心在char字符串和uint64s之间进行交换(特别是如果目标计算机是像Intel盒一样的低端字节序的话)...