NodeMCU Lua 정수 최대 값은 2 ^ 31입니다.

Aug 19 2020

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 비트 값을 허용하지 않습니까?

문안 인사,

세자르

답변

MarcelStör Aug 20 2020 at 06:47

이미 int 대 float에 대한 피드백을 받았습니다. 에 관해서는 dsleep 문서 않습니다는 64 비트 값을 사용할 수 있지만,이에 따라 무슨 일이 일어나고 있는지 실제로 있다고하지 명시 적으로 상태https://github.com/nodemcu/nodemcu-firmware/pull/2358 (2018 년 4 월 이후).