NodeMCULua整数の最大値は2 ^ 31です

Aug 19 2020

SDK3.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ビット値を受け入れることになっていますか?

よろしく、

セザール

回答

MarcelStör Aug 20 2020 at 06:47

あなたはすでにint対floatに関するいくつかのフィードバックを得ています。dsleep ドキュメントに関しては、 64ビット値を受け入れることを明示的に述べていませんが、それは実際に起こっていることですhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (2018年4月以降)。