NodeMCU Lua tamsayı maksimum değeri 2 ^ 31

Aug 19 2020

SDK 3.0.1-dev (fce080e) üzerinde Lua 5.1.4 node.dsleepMax () kullanmaya çalışıyor ve gerçekten daha küçük bir sayı (147324921) döndürüyor. Sonra node.dsleep'deki uyku süresini manuel olarak 32 bit maksimum değere (4294967295) ayarlamaya çalıştım ve yalnızca yaklaşık 30 dakika kadar uykuda kaldı.

Aşağıdakileri denedim:

    sleeptime = 4294967295
    > 
    =print(sleeptime)

2147483647

ki bu 2 ^ 31 -1'dir.

Ayrıca bir değişkene ekleyen bir döngü yaptı ve 2 ^ 31'e ulaştığında negatif hale geldi.

Sorular:

  1. Değişken neden 2 ^ 31'de kaydırılıyor?
  2. Node.dsleep'in 64 bitlik bir değeri SDK 2.1 ve üzeri ile kabul etmesi gerekmiyor mu?

Saygılarımızla,

Cesar

Yanıtlar

MarcelStör Aug 20 2020 at 06:47

İnt ile float karşılaştırması hakkında zaten bazı geri bildirimler aldınız. dsleep Belgelere gelince, açıkça 64bit değerlerini kabul ettiğini belirtmiyor, ancak gerçekte olan şey buhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (Nisan 2018'den beri).