CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

请熟悉C语言的前辈们帮忙将一段异或运算代码转为Delphi

楼主dyzhao889(游颖)2006-01-09 17:44:16 在 Delphi / 语言基础/算法/系统设计 提问

各位熟悉C的前辈们:  
  能否帮小弟将下面的代码转成Delphi:  
  char*   AppProtocolCalcTAIPChecksum(Char   *passTAIPMsg,unsigned   char   *checksun)  
  {  
  char   *pcEnd;  
  char   *pc;  
  unsigned   char   cs;  
   
  if((pcEnd=strin(pssTAIPMsg,";*"))!=NULL)  
  {  
  pc=pssTAIPMsg;  
  pcEnd+=2;  
  cs=0;  
  while(pc<pcEnd)  
  {  
  cs   ^=   *pc;  
  pc++;  
  }  
  *checksum=cs;  
  return   pcEnd-2;  
  }  
  else  
  {  
  return   NULL;  
  }  
  }  
  小弟在此先谢!!!在线等! 问题点数:50、回复次数:4Top

1 楼ccrun(老妖)(www.ccrun.com)回复于 2006-01-09 18:23:31 得分 0

楼主的信誉有点让我不能马上确定占用做饭时间来帮你写代码。  
   
  如果晚10点以前仍没人帮你的话,我会考虑动手。Top

2 楼liangqingzhi(老之)回复于 2006-01-09 18:30:24 得分 0

如果晚11点以前老妖仍没帮你的话,我会考虑动手。Top

3 楼keiy()回复于 2006-01-09 19:26:42 得分 50

楼上两位高手不愿做的,让我试试吧!,不过,楼主的C程序还有一些错,顺手改了一下:  
  //C程序:  
  #include   <stdio.h>  
  #include   <string.h>  
   
  char*   AppProtocolCalcTAIPChecksum(char   *passTAIPMsg,unsigned   char   *checksum)  
  {  
  char   *pcEnd;  
  char   *pc;  
  unsigned   char   cs;  
   
  if((pcEnd=strstr(passTAIPMsg,";*"))!=NULL)  
  {  
  pc=passTAIPMsg;  
  pcEnd+=2;  
  cs=0;  
  while(pc<pcEnd)  
  {  
  cs   ^=   *pc;  
  pc++;  
  }  
  *checksum=cs;  
  return   pcEnd-2;  
  }  
  else  
  {  
  return   NULL;  
  }  
  }  
  //以下是我加的测试  
  main()  
  {  
      char   *s,*r;  
      unsigned   char   c;  
      s="1234;*561";  
      r=AppProtocolCalcTAIPChecksum(s,&c);  
      printf("%s   %d\n",r,c);  
  }  
  //delphi程序  
   
  uses   SysUtils;  
  function   AppProtocolCalcTAIPChecksum(passTAIPMsg:pchar;var   checksum:byte):pchar;  
  var  
  pcEnd:pchar;  
  pc:pchar;  
  cs:byte;  
  begin  
   
      pcEnd:=strpos(passTAIPMsg,';*');  
      if   pcEnd<>nil   then  
  begin  
  pc:=passTAIPMsg;  
  pcEnd:=pcEnd+2;  
  cs:=0;  
  while(pc<pcEnd)   do  
  begin  
  cs   :=   cs   xor   byte(pc^);  
  inc(pc);  
  end;  
  checksum:=cs;  
  result:=pcEnd-2;  
  end   else    
  result:=nil;  
  end;  
  //以下是测试  
  var  
      s,r:pchar;  
      c:byte;  
  begin  
      s:='1234;*561';  
      r:=AppProtocolCalcTAIPChecksum(s,c);  
      writeln(r,'       ',c);  
  end.  
  -----------------------------  
  结果都为:  
  ;*561   21  
  Top

4 楼dyzhao889(游颖)回复于 2006-01-10 11:01:39 得分 0

小弟非常感激楼上的   keiy()!Top

相关问题

  • [请教]delphi中异或运算的相关使用?
  • 关于异或运算和与运算
  • 二元异或运算符的算法。
  • 按位异或运算的问题
  • ☆★☆ 怎样将一个CSting的字符串 进行异或运算   ☆★☆
  • 文本文件加密的异或运算
  • Delphi能象C++一样重载运算符吗?
  • 用C#怎样写异或呢??
  • orcale中有没有位运算的函数?如取反、逻辑与、异或、或......
  • 请问VB里有没有实现EOR(异或)的函数或者运算符!

关键词

  • 代码
  • pc
  • delphi
  • null
  • pcend
  • passtaipmsg
  • appprotocolcalctaipchecksum
  • psstaipmsg
  • 熟悉c
  • 前辈们

得分解答快速导航

  • 帖主:dyzhao889
  • keiy

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo