奇数校验和结果 - 未收到预期结果
Odd Checksum Result(s) - Not Receiving Expected Results
我一直在尝试根据文件 header 生成校验和,但收到的结果相互矛盾。在从设备手册中,它声明以下内容来生成校验和:
》对header校验和使用简单的eight-bit计算,所需步骤如下:
- 计算单个字节中header个字节的总和。或者计算
求和,然后用 FFhex 与结果求和。
- 校验和 = FFhex - 第 1 步的总和。"
在这里,我在 Lua 中创建了以下代码:
function header_checksum(string)
local sum = 0
for i = 1, #string do
sum = sum + string.byte(i)
end
local chksum = 255 - (sum & 255)
return chksum
end
如果我向下发送以下(4 个字节)字符串 print(header_checksum("0181B81800"))
,我会得到以下结果:
- 241(如您所见发送的字符串)
- 0(每个字节都改成十六进制然后送函数)
在给出的示例中,它声明字节应该是 AD
,即 173(dec) 或 \255。
有人可以告诉我我在做什么有什么问题吗?编写的代码、我的方法或两者兼而有之?
function header_checksum(header)
local sum = -1
for i = 1, #header do
sum = sum - header:byte(i)
end
return sum % 256
end
print(header_checksum(string.char(0x01,0x81,0xB8,0x18,0x00))) --> 173
我一直在尝试根据文件 header 生成校验和,但收到的结果相互矛盾。在从设备手册中,它声明以下内容来生成校验和:
》对header校验和使用简单的eight-bit计算,所需步骤如下:
- 计算单个字节中header个字节的总和。或者计算 求和,然后用 FFhex 与结果求和。
- 校验和 = FFhex - 第 1 步的总和。"
在这里,我在 Lua 中创建了以下代码:
function header_checksum(string)
local sum = 0
for i = 1, #string do
sum = sum + string.byte(i)
end
local chksum = 255 - (sum & 255)
return chksum
end
如果我向下发送以下(4 个字节)字符串 print(header_checksum("0181B81800"))
,我会得到以下结果:
- 241(如您所见发送的字符串)
- 0(每个字节都改成十六进制然后送函数)
在给出的示例中,它声明字节应该是 AD
,即 173(dec) 或 \255。
有人可以告诉我我在做什么有什么问题吗?编写的代码、我的方法或两者兼而有之?
function header_checksum(header)
local sum = -1
for i = 1, #header do
sum = sum - header:byte(i)
end
return sum % 256
end
print(header_checksum(string.char(0x01,0x81,0xB8,0x18,0x00))) --> 173