网页功能: 加入收藏 设为首页 网站搜索  
GSM规范中的部分编码转换
发表日期:2004-03-22作者:bjskyhorse(CSDN)[] 出处:  

 在做跟手机短信相关的东东时候常遇到各种编码格式数据的转换,特写了几个函数,供参考。

 function EncodeEnglish(var s:string):string;

 var

 i,j,len:Integer;

 cur:Integer;

 t:String;

 begin

 Result:='';

 len:=Length(s);

 //j 用于移位计数

  i:=1;j:=0;

 while i<=len do

 begin

 if i<len then

 //数据变换

 cur:=(ord(s[i]) shr j) or ((ord(s[i+1]) shl (7-j)) and $ff)

 else

  cur:=(ord(s[i]) shr j) and $7f;

 FmtStr(t,'%2.2X',[cur]);

 Result:=Result+t;

 inc(i);

 //移位计数达到7位的特别处理

 j:=(j+1) mod 7;

 if j=0 then inc(i);

 end;

 end;

 //end;  

  function BinaryUniCode2Gb2312(ABinaryString:PChar;APosStart,APosEnd:integer):string;

 var

  i,iLen:integer;

  AscHexText,TmpHexStr:string;

  AsciiInt:integer ;

  AscLen,AscUniLen:integer;

  UniHexstr,GB2312:string;

 begin

  iLen:=Length(ABinaryString);

  for i:= APosStart-1 to APosEnd-1 do

   begin

  AsciiInt:=ord(ABinaryString[i]);

  TmpHexStr:=Format('%x',[AsciiInt]);

  if length(TmpHexStr)=1 then

   TmpHexStr:='0'+TmpHexStr;

  AscHexText:=AscHexText+TmpHexStr;

   end; //for

  AscLen:=Length(AscHexText);

  AscUniLen:=AscLen div 4;

   for i:=0 to AscUniLen-1 do

    begin

    UniHexstr:=Copy(AscHexText,i*4+1,4);

   // Gb2312 := Gb2312 + UnicodeToGb2312(HexAscii2DecimalInt(uniHexstr));

   end;  // for

   result := Gb2312 ;

  end;

 function WideStringToUnicode_Ex(s:WideString;ADestStr:PChar;Limit:integer):integer;

 var sLen:integer;

  buffer:array[1..1024] of char;

  tmpchar:char;

  i:integer;

 begin

 sLen:=Length(s);

 if sLen>0 then

  begin

   CopyMemory(@buffer,Pointer(s),2*SLen);

   for i:=0 to SLen-1 do

   begin

    tmpchar:=buffer[2*i+1];

    buffer[2*i+1]:=buffer[2*i+2];

    buffer[2*i+2]:=tmpchar;

   end;

   if SLen>Limit then

   SLen:=Limit;

   CopyMemory(ADestStr,@buffer,2*SLen);

   result:=SLen*2;

   result:=2*SLen;

   end

   else

   begin

    result:=0;

   end;

 end;

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 GSM规范中的部分编码转换
本类热点文章
  DBGrid 应用全书
  用户界面设计的技巧与技术
  TWebBrowser编程简述
  初探Delphi 7 中的插件编程
  获取主板BIOS的信息
  网卡的远程网络唤醒
  Delphi 2006简介(Dexter)
  用Delphi开发数据库程序经验三则
  在Windows2000中拦截Ctrl+Alt+Del
  编写TAPI应用程序
  利用语音Modem实现电话点播和留言功能
  Delphi面向对象编程的20条规则
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2019 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00519