293 Star 1.6K Fork 379

GVP合宙Luat / LuatOS

 / 详情

[🐛Bug]: 780epv数据计算结果不正确

已完成
创建于  
2024-04-23 14:56

描述一下这个bug / Describe the bug

modbus协议传输数据,尝试将s32数据处理为无符号整数,计算过程中发现结果并不正确

复现步骤 / To Reproduce

local value = -165
value = value < 0 and 4294967295 + value + 1 or value

local HWord=math.floor(value/65536) 
local LWord=value%65536 
print(HWord, LWord)

打印信息为
[2024-04-23 14:50:10.494][000000002.015] 65535 65280.00

如果正常,应该是什么样 / Expected behavior

如果计算正确那么HWord*65536+LWord应该等于4294967295 + 1 - 165也就是4,294,967,131,这里的结果65535X65536+65280为4,294,967,040,明显不相等,计算过程中似乎存在问题,但是目前没有方法直接打印这样的大数据无论是直接print还是print(tostring)结果都是科学计数法表示,无法对数据的计算过程进行跟踪

截图 / Screenshots

输入图片说明

日志 / Logs

[2024-04-23 14:50:10.494][000000002.015] 65535 65280.00

PACK包版本 / Version

1.0.0.1

验证

  • 检查过该问题,之前没有人提过 / Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
  • 提供了最小可复现工程或详细的复现步骤,确保开发者可以复现 / The provided reproduction is a minimal reproducible example of the bug.
  • 已经提供了完整的报错信息、日志、截图,没有经过删减。

评论 (4)

乌拉拉呜呜 创建了任务
乌拉拉呜呜 修改了描述
展开全部操作日志

luatos计算是按照有符号进行的

明白了,相当于转化为有符号整数处理了,结果还是-165,谢谢。那方便话,想请问一下在luaos中应该如何实现对于一个有符号整数向无符号整数的转换呢?

如果要做计算,建议写C代码然后lua来调用

okok好的 明白了谢谢

alien2017 计划截止日期设置为2024-04-26
alien2017 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
11739977 wjyu test 1714031698
Lua
1
https://gitee.com/openLuat/LuatOS.git
git@gitee.com:openLuat/LuatOS.git
openLuat
LuatOS
LuatOS

搜索帮助