Delphi中的LRC校验和
我正在尝试将 C 代码转换为 Delphi/pascal,但不知何故我无法让它工作,我的方法是这样的:
function CheckLRC(s : PChar) : Char;
var
sum : char;
begin
sum := #0;
while (^s <> #0) do
begin
sum := (sum XOR ^s);
inc (s)
end;
result := sum;
end;
原始 C 代码是:
Set LRC = 0
For each byte b in the buffer
do
Set LRC = (LRC + b) AND 0xFF
end do
Set LRC = (((LRC XOR 0xFF) + 1) AND 0xFF)
希望任何人都能够帮助我,并可以确认这是正确的进行 LRC 校验和的方法?
I am trying to convert a C code to Delphi/pascal, but somehow I cannot get it to work, my approach was like this :
function CheckLRC(s : PChar) : Char;
var
sum : char;
begin
sum := #0;
while (^s <> #0) do
begin
sum := (sum XOR ^s);
inc (s)
end;
result := sum;
end;
Original C code was :
Set LRC = 0
For each byte b in the buffer
do
Set LRC = (LRC + b) AND 0xFF
end do
Set LRC = (((LRC XOR 0xFF) + 1) AND 0xFF)
Hope anyone out there is able to help me, and can confirm this is the correct way to do an LRC checksum ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜这个函数的确切等价物可能是:
原始代码中的所有“and $FF”在这里都是不需要的,因为我们使用
byte
作为结果。I guess the exact equivalence of this function may be:
All "and $FF" in original code is unneeded here, since we are using a
byte
as result.