求用delphi编写的LRC校验位算法函数,急!!!
  某命令串为":010200000001FC"
  其16进制为“3A 30 31 30 32 30 30 30 30 30 30 30 31 46 43 0D 0A”。其中第一个为起始符,2-13为数据,14-15即“FC”为LRC校验码,有人能写一个取得校验位的函数吗?
下边有一段用VC写的程序 将帧的内容,除去头代码,用十六进制表示,求和,模FF,然后取补码,以ASCII码表示即可。
  例如:ASCII帧
   3A 30 31 30 32 30 30 30 30 30 30 30 31 46 43 0D 0A
  将校验内容用十六进制表示为:
   00 01 00 02 00 00 00 00 00 00 00 01
  将以上数值用十六进制求和,模FF:
   00+01+00+02+00+00+00+00+00+00+00+01=04=0000 0100
  取反:1111 1011
  加1: 1111 1100
  十六进制变换:F C
  ASCII码:46 43
  LRC就是这样算出来的这里有一段用C写的程序,有谁能用DELPHI写吗?
static unsigned char LRC(auchMsg,usDataLen)
  
  unsigned char *auchMsg ; /* 要进行计算的消息 */
  
  unsigned short usDataLen ; /* LRC 要处理的字节的数量*/
  
  { unsigned char uchLRC = 0 ; /* LRC 字节初始化 */
  
  while (usDataLen--) /* 传送消息 */
  
  uchLRC += *auchMsg++ ; /* 累加*/
  
  return ((unsigned char)(-((char_uchLRC))) ;
  
  }
解决方案 »
cvm

function GetLRC(AData: array of Byte; iLen: Integer): Byte;
var
iLoop : Integer;
begin
Result := 0;
for iLoop := 0 to iLen - 1 do Result := Result + AData[iLoop];
Result := Result xor $FF + 1;
end;procedure TForm1.FormCreate(Sender: TObject);
var
AData: array[0..5] of Byte;
iLRC : Byte;
begin
AData[0] := $01;
AData[1] := $02;
AData[2] := $00;
AData[3] := $00;
AData[4] := $00;
AData[5] := $01;
iLRC := GetLRC(AData, 6);
ShowMessage(IntToHex(iLRC,2));
end;

再多加个函数,可以直接获取类似楼主例子中的"010200000001FC"这个字符串:
function GetLRC(AData: array of Byte; iLen: Integer): Byte;
var
iLoop : Integer;
begin
Result := 0;
for iLoop := 0 to iLen - 1 do Result := Result + AData[iLoop];
Result := Result xor $FF + 1;
end;function GetHexString(AData: array of Byte; iLen: Integer): String;
var
iLoop: Integer;
begin
Result := '';
for iLoop := 0 to iLen - 1 do
Result := Result + IntToHex(AData[iLoop], 2);
Result := Result + IntToHex(GetLRC(AData, iLen), 2);
end;procedure TForm1.FormCreate(Sender: TObject);
var
AData: array[0..5] of Byte;
begin
AData[0] := $01;
AData[1] := $02;
AData[2] := $00;
AData[3] := $00;
AData[4] := $00;
AData[5] := $01;
ShowMessage(GetHexString(AData, 6));
end;

static byte LRC(byte[] data)
{
byte lrc = 0;
foreach (byte c in data)
{
lrc += c;
}
return (byte)-lrc;
}

求用delphi编写的LRC校验位算法函数,急!!!的更多相关文章

  1. 算法导论-求(Fibonacci)斐波那契数列算法对比

    目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 ...

  2. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  3. 转 : 用Delphi编写安装程序

    http://www.okbase.net/doc/details/931  还没有亲自验证过,仅收藏 当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步 ...

  4. delphi编写winsocket的流程

    delphi编写winsocket的流程 1.在窗体创建的时候启用动态连接库(引用winsock)    var  aWSAData:TWSAData;    if WSAStartup($0101, ...

  5. delphi编写dll心得, 谢谢原作者的分享。转

    delphi编写dll心得 1.每个函数体(包括exports和非exports函数)后面加 'stdcall;', 以编写出通用的dll2.exports函数后面必须加'export;'(放在'st ...

  6. DELPHI编写服务程序总结

    DELPHI编写服务程序总结 一.服务程序和桌面程序的区别 Windows 2000/XP/2003等支持一种叫做“系统服务程序”的进程,系统服务和桌面程序的区别是:系统服务不用登陆系统即可运行:系统 ...

  7. Qt调用Delphi编写的COM组件

    这个问题捣鼓了两天,现在终于解决了,做个笔记分享给大家,以免走弯路 起初,我的想法是在DLL中写一个interface并从函数中导出这个interface,像这样的代码 ICom1 = interfa ...

  8. 利用Delphi编写Socket通信程序

    一.Delphi与Socket 计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登 ...

  9. delphi编写与调用DLL(delphi7下测试通过)

    http://blog.sina.com.cn/s/blog_4dbbf76f01000anz.html delphi编写DLL 下面在delphi中编写一个简单的dll,在该dll中只有一个max函 ...

随机推荐

  1. js中123==123为false的问题--写成123=="123"即可解决问题

    项目中遇到过一个问题,js拿到后台返回的一个数字,在if中判断时,出现类似123==123为false的结果, 初步分析原因,应该是返回的是string类型的,但拿来比较的是个number类型的,所以 ...

  2. 1 - JVM随笔分类(java虚拟机的内存区域分配(一个不断记录和推翻以及再记录的一个过程))

    java虚拟机的内存区域分配   在JVM运行时,类加载器ClassLoader在加载到类的字节码后,交由jvm的执行引擎处理, 执行过程中需要空间来存储数据(类似于Cpu及主存),此时的这段空间的分 ...

  3. navigationBar 设置关于setTranslucent

    在ios7中, 如果setTranslucent=yes 默认的   则状态栏及导航栏底部为透明的,界面上的组件应该从屏幕顶部开始显示,因为是半透明的,可以看到,所以为了不和状态栏及导航栏重叠,第一个 ...

  4. nyoj 题目19 擅长排列的小明

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...

  5. PYTHON资源入口汇总

    Python资源入口汇总 官网 官方文档 教程和书籍 框架 数据库 模板 工具及第三方包 视频 书籍 博客 经典博文集合 社区 其他 整理中,进度30% 官网 入口 官方文档 英文 document ...

  6. [Python]Pandas简单入门(转)

    本篇文章转自 https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?hl=zh-cn#scrollTo=zCOn ...

  7. POJ 1990:MooFest(树状数组)

    题目大意:有n头牛,第i头牛声调为v[i],坐标为x[i],任意两值牛i,j沟通所需的花费为abs(x[i]-x[j])*max(v[i],v[j]),求所有牛两两沟通的花费. 分析: 我们将奶牛按声 ...

  8. CTSC2018 旅游记

    我即使是死了,尸体烂在棺材里,也要用这腐朽的声音喊出: LJCCF!!!! DAY -3 体育中考AK了! 顿时感觉中考稳了(虽然竞赛已经特招) 新目标:我要用三种方式考上SZMS! DAY -1 成 ...

  9. 重绘(repaints)与重排(reflows)

    当页面布局和几何属性改变时就需要"重排" 避免在修改样式的过程中使用 offsetTop, scrollTop, clientTop, getComputedStyle() 这些属性, 它们都会刷新渲 ...

  10. 【CCF】URL映射 模拟

    #include<iostream> #include<cstdio> #include<cstring> #include<string> #incl ...