关于SMS编码Delphi源码摘抄

2024-03-22 23:32
文章标签 源码 编码 delphi sms 摘抄

本文主要是介绍关于SMS编码Delphi源码摘抄,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.英文编码
function Encode7bit(Src:String):String;
var Dst:String;
    i:Integer;
    CurS,NextS:Byte;
    TStr:String;
begin
  for i:=1 to Length(Src) do begin
    //当前是字符按8位分组的第8位,无需编码(8个字符已缩短为7个)
    if (i mod 8)=0 then Continue;
   
    //取当前位为数字
    TStr:=Copy(Src,i,1);
    CurS:=Ord(TStr[1]);

    //当前右移位组中的第一个字符不移位
    if (i mod 8)>1 then
      CurS:=(CurS shr ((i mod 8)-1) );

    //取后一位为数字如果到了字符的结束,不取
    if i TStr:=Copy(Src,i+1,1);
      NextS:=Ord(TStr[1]);
    end else
      NextS:=0;
    //后一位移位 左移
    NextS:=(NextS shl (8-(i mod 8)));

    //当前移位后加后一位移位后  转换成为十六进制
    Dst:=Dst+IntToHex(CurS+NextS,2);
  end;
  Result:=Dst;
end;

2、英文解码
function Decode7bit(Src:String):String;
var Dst:String;
    i:Integer;
    CurS,ProiS:Byte;
begin
  for i:=1 to (Length(Src) div 2) do begin
    //将当前位的十六进制转换为十进制
    CurS:=StrToInt('$'+Copy(Src,(i-1)*2+1,2)); //32->50
    //取前一位十六进制转换为十进制
    if (i mod 7)<>1 then
      ProiS:=StrToInt('$'+Copy(Src,(i-2)*2+1,2)) //C8->200
    else
      ProiS:=0;
    //前一位右移,即将当前字符前移的位取出来
    if (i mod 7)>0 then
      ProiS:=(ProiS shr (9-(i mod 7)))
    else
      ProiS:=(ProiS shr 2);
    //当前位左移除掉高位
    if (i mod 7)>0 then
      CurS:=(CurS shl (i mod 7) )
    else
      CurS:=(CurS shl 7 );
    //将第八位设置为0
    CurS:=(CurS shr 1);
    Dst:=Dst+Chr(CurS+ProiS);
    //第七个十六进制内已包含有一个完整的字符
    if (i mod 7)=0 then begin
      CurS:=StrToInt('$'+Copy(Src,(i-1)*2+1,2)); //32->50
      CurS:=(CurS shr 1);
      Dst:=Dst+Chr(CurS);
    end;
  end;//en for
  Result:=Dst;
end;

3.中文编码
function CnToUSC(var s:WideString):String; 
var
  i,len:Integer;
  cur:Integer;
  t:String;
begin
  Result:= '';
  len:=Length(s);
  i:=1;
  while i<=len do
  begin
    cur:=ord(s[i]);
    //BCD转换
    FmtStr(t,'%4.4X',[cur]); 
    Result:=Result+t;
    inc(i);
  end;
end; 
 


4、PDU解码
function TForm1.DecodeChinese(SRC: String): string; //中文解码
var
  i:Integer;
  S:String;
  D:WideChar;
  ResultW:WideString;
begin
  for i:=1 to Round(Length(Src)/4) do
  begin
    S:=Copy(Src,(i-1)*4+1,4);
    D:=WideChar(StrToInt('$'+s)); //此处是重点,用delphi提供的widechar可以转换
   ResultW:=ResultW+D;
  end;
  Result:=ResultW;
end;



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1503842


这篇关于关于SMS编码Delphi源码摘抄的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836449

相关文章

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

高仿精仿愤怒的小鸟android版游戏源码

这是一款很完美的高仿精仿愤怒的小鸟android版游戏源码,大家可以研究一下吧、 为了报复偷走鸟蛋的肥猪们,鸟儿以自己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。 源码下载

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

美容美发店营销版微信小程序源码

打造线上生意新篇章 一、引言:微信小程序,开启美容美发行业新纪元 在数字化时代,微信小程序以其便捷、高效的特点,成为了美容美发行业营销的新宠。本文将带您深入了解美容美发营销微信小程序,探讨其独特优势及如何助力商家实现业务增长。 二、微信小程序:美容美发行业的得力助手 拓宽客源渠道:微信小程序基于微信社交平台,轻松实现线上线下融合,帮助商家快速吸引潜在客户,拓宽客源渠道。 提升用户体验:

风水研究会官网源码系统-可展示自己的领域内容-商品售卖等

一款用于展示风水行业,周易测算行业,玄学行业的系统,并支持售卖自己的商品。 整洁大气,非常漂亮,前端内容均可通过后台修改。 大致功能: 支持前端内容通过后端自定义支持开启关闭会员功能,会员等级设置支持对接官方支付支持添加商品类支持添加虚拟下载类支持自定义其他类型字段支持生成虚拟激活卡支持采集其他站点文章支持对接收益广告支持文章评论支持积分功能支持推广功能更多功能,搭建完成自行体验吧! 原文

HTML5文旅文化旅游网站模板源码

文章目录 1.设计来源文旅宣传1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 文旅之行界面演示1.5 文旅之行文章内容界面演示1.6 关于我们界面演示1.7 文旅博客界面演示1.8 文旅博客文章内容界面演示1.9 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)  标签: 编码邓白氏编码申请流程苹果开发者账号申请 2016-07-08 16:13  2274人阅读  评论(2)  收藏  举报   分类: 技术  苹果开发  邓白氏编码申请 版权声明:本文为博主原创文章,未经博主允许不得转载。     申请公司的苹果开发者账号和企业级的苹

mediasoup 源码分析 (八)分析PlainTransport

mediasoup 源码分析 (六)分析PlainTransport 一、接收裸RTP流二、mediasoup 中udp建立过程 tips 一、接收裸RTP流 PlainTransport 可以接收裸RTP流,也可以接收AES加密的RTP流。源码中提供了一个通过ffmpeg发送裸RTP流到mediasoup的脚本,具体地址为:mediasoup-demo/broadcaste

Java并发编程—阻塞队列源码分析

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。   在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了D

线程池ThreadPoolExecutor类源码分析

Java并发编程:线程池的使用   在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:   如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。   那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?