在 Lua 中计算校验和
Calculate checksum in Lua
我没有Lua方面的经验,谁能帮我计算以下的校验和?
55 aa 00 00 fe 00 00 00 00 00 01 00 00 01 51 13 01 00 XX
(XX 表示从 1-16 或 0x00 到 0x0f 的数字)
SUM_L和SUM_H构成了这个命令帧的校验和,是下划线数据和0x5555之和。计算公式如下
总和 = 0x00 + 0x00 + 0xfe + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x01 + 0x00 + 0x00 + 0x00 + 0x51 + 0x13 + 0x01 + 0x00 + XX + 0x5555,总和 = SUM_H <<8 + SUM_L(SUM_L代表SUM的低8位,而SUM_H代表SUM的高8位
local someBytes = {0x55, 0xaa, 0x00, 0x00, 0xfe} -- and so forth
function checksum(bytes)
local SUM = 0
for _,v in ipairs(bytes) do
SUM = SUM + v
end
SUM = SUM + 0x5555
local SUM_H = (SUM & 0xFF << 8) >> 8
local SUM_L = SUM & 0xFF
return SUM_H, SUM_L
end
local highByte, lowByte = checksum(someBytes)
print(string.format("High Byte:\t0x%02X\nLow Byte:\t0x%02X", highByte, lowByte))
我没有Lua方面的经验,谁能帮我计算以下的校验和?
55 aa 00 00 fe 00 00 00 00 00 01 00 00 01 51 13 01 00 XX (XX 表示从 1-16 或 0x00 到 0x0f 的数字)
SUM_L和SUM_H构成了这个命令帧的校验和,是下划线数据和0x5555之和。计算公式如下
总和 = 0x00 + 0x00 + 0xfe + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x01 + 0x00 + 0x00 + 0x00 + 0x51 + 0x13 + 0x01 + 0x00 + XX + 0x5555,总和 = SUM_H <<8 + SUM_L(SUM_L代表SUM的低8位,而SUM_H代表SUM的高8位
local someBytes = {0x55, 0xaa, 0x00, 0x00, 0xfe} -- and so forth
function checksum(bytes)
local SUM = 0
for _,v in ipairs(bytes) do
SUM = SUM + v
end
SUM = SUM + 0x5555
local SUM_H = (SUM & 0xFF << 8) >> 8
local SUM_L = SUM & 0xFF
return SUM_H, SUM_L
end
local highByte, lowByte = checksum(someBytes)
print(string.format("High Byte:\t0x%02X\nLow Byte:\t0x%02X", highByte, lowByte))