LUA 5.1 CRC16/Modbus 校验 纯LUA实现

本文介绍了在LUA 5.1环境下,由于不支持位操作,作者自定义实现了CRC16和Modbus校验功能。通过提供的CRC16函数,可以计算出校验位。为了验证代码的准确性,作者还分享了一个在线验证工具的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语:由于LUA5.1上,不支持位操作,先自实现了在 lua 5. 1 上的位操作

具体代码如下:

1)调用CRC16函数即可,函数返回是 CRC16/MODBUS 校验的校验位

2)提供验证代码准确性的网站: http://www.ip33.com/crc.html

function And(num1,num2)
	local tmp1 = num1
	local tmp2 = num2
	local ret = 0
	local count = 0
	repeat
		local s1 = tmp1 % 2
		local s2 = tmp2 % 2
		if s1 == s2 and s1 == 1 then
			ret = ret + 2^count
		end
		tmp1 = math.modf(tmp1/2)
		tmp2 = math.modf(tmp2/2)
		count = count + 1
	until(tmp1 == 0 and tmp2 == 0)
	return ret
end

function Xor(num1,num2)
	local tmp1 = num1
	local tmp2 = num2
	local ret = 0
	local count = 0
	repeat
		local s1 = tmp1 % 2
		local s2 = tmp2 % 2
		if s1 ~= s2 then
			ret = ret + 2^count
		end
		tmp1 = math.modf(tmp1/2)
		tmp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值