GSM规范中的部分编码转换

原创 2004年03月21日 00:08:00

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

 

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;

3GPP简介及标准查找指南

3GPP是积极倡导UMTS为主的第三代标准化组织,成立于1998年12月,是一个协作协议。3GPP最初的工作范围是第三代移动系统指定全球使用的技术规范与技术报告。第三代移动系统是基于发展的GSM核心网...
  • lenk2010
  • lenk2010
  • 2013年03月26日 14:29
  • 3282

GB2312区位码、编码表与编码规则

最近研究字体点阵生成,看到这篇文章,觉得不错! 来源:GB2312区位码、编码表与编码规则  来源地址:http://blog.csdn.net/yjier/article/details/623...
  • u011430225
  • u011430225
  • 2016年01月15日 16:04
  • 3026

Python的pep8(代码规范)

主要是学习一下python的代码规范,根据官方文档翻译而来
  • kellyseeme
  • kellyseeme
  • 2016年02月08日 18:56
  • 9248

java文本编码转换

  • 2016年09月03日 17:02
  • 2KB
  • 下载

字符编码转换iconv

  • 2016年08月12日 15:05
  • 637KB
  • 下载

编码转换小工具

  • 2017年02月21日 15:46
  • 1.83MB
  • 下载

ruby编码转换

  • 2016年06月30日 10:07
  • 2KB
  • 下载

编码转换脚本 v1.0.2 — 解决Source Insight等中文显示乱码

  • 2015年08月05日 10:37
  • 2KB
  • 下载

编码转换工具

  • 2013年09月11日 16:54
  • 23KB
  • 下载

文字编码转换工具

  • 2013年08月27日 16:35
  • 31KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GSM规范中的部分编码转换
举报原因:
原因补充:

(最多只允许输入30个字)