首页 > 解决方案 > NodeMCU Lua 整数最大值为 2^31

问题描述

SDK 3.0.1-dev(fce080e) 上的 Lua 5.1.4 尝试使用 node.dsleepMax() 并返回一个非常小的数字 (147324921)。然后我尝试手动将 node.dsleep 中的睡眠时间设置为 32 位最大值(4294967295),它只保持睡眠大约 30 分钟左右。

尝试了以下方法:

    sleeptime = 4294967295
    > 
    =print(sleeptime)

2147483647

这是 2^31 -1。

还做了一个循环添加到一个变量,当它达到 2^31 时它变成负数。

问题:

  1. 为什么变量在 2^31 处换行?
  2. node.dsleep 不应该接受 SDK 2.1 及更高版本的 64 位值吗?

问候,

塞萨尔

标签: luaesp8266nodemcu

解决方案


您已经得到了一些关于 int 与 float 的反馈。至于dsleep 文档没有明确声明它接受 64 位值,但这确实是按照https://github.com/nodemcu/nodemcu-firmware/pull/2358(自 2018 年 4 月以来)发生的情况。


推荐阅读