• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
GSM规范中的部分编码转换
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
GSM规范中的部分编码转换
软件发布 GSM规范中的部分编码转换
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> Delphi教程 >> GSM规范中的部分编码转换

GSM规范中的部分编码转换

添加时间: 2006-2-26 9:44:47  作者: Delphi教程  阅读次数:72   来源: http://www.d9soft.com

       

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

  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;

 

 

上下文章:

 

上一篇文章: Delphi中的窗体移动 下一篇文章: 使用Delphi创建IIS虚拟目录

相关文章:

  • 应遵循的PL/SQL编码规
  • NTFS与FAT32文件系统互相转换方法
  • 理解Cisco PIX 防火墙的转换和连接
  • 多媒体文件格式转换之视频格式
  • WAV的制作---录制和媒体转换

相关软件:

  • MP4转换 2008 IPOD单版
  • MP4转换 2008 3GP单版
  • MP4转换 2008 PSP单版
  • 全能MP4/3GP视频转换通 2008
  • MP4转换专家 5.0
  • 字幕转换通 5.32 Build 690 白金版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • Delphi的两个实用技巧(1)播放Flash
  • Delphi的两个实用技巧(2)巧用Wind...
  • delphi实例编程之--制作可随处拖放...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 在线播放器DIY
  • Delphi让你发送Flash电子邮件
  • 在窗口标题区添加按钮
  • 用Delphi 6编程实现自动标注汉语拼...

Delphi教程阅读排行

  • Delphi7从入门到精通之历数Delphi...
  • Delphi的两个实用技巧(1)播放Flash
  • Delphi7从入门到精通之认识Delphi...
  • delphi实例编程之--制作可随处拖放...
  • Delphi控件,我们也可以(1)
  • Delphi的两个实用技巧(2)巧用Wind...
  • 在线播放器DIY
  • Delphi控件,我们也可以(2)
  • Spcomm串口控件的例程
  • 用Delphi + DirectX开发简单RPG游...

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有