亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? phoneshare.~pas

?? 很方便查看各種字符的unicode值
?? ~PAS
字號(hào):
unit PhoneShare;

interface

uses
  SysUtils,Math;

type
  TPDUFormatRec = Record
    CenterLen:Array[0..1] of Char;                 //短信息中心地址長(zhǎng)度
    CenterType:Array[0..1] of Char;                //短信息中心號(hào)碼類型,91是TON/NPI
    CenterNumber:Array[0..13] of Char;             //所在地GSM短信息中心的號(hào)碼
    FileHeader:Array[0..1] of Char;                //指正常地發(fā)送短信息
    SMType:Array[0..1] of Char;                    //信息類型
    CalledLen:Array[0..1] of Char;                 //被叫號(hào)碼長(zhǎng)度
    CalledType:Array[0..1] of Char;                //被叫號(hào)碼類型
    CalledNumber:Array[0..11] of Char;             //被叫號(hào)碼
//    PID:Array[0..1] of Char;                       //
//    DCS:Array[0..1] of Char;                       //
//    TimeStamp:Array[0..13] of Char;                //
    SMCodeType:Array[0..5] of Char;                //短信息編碼類型GSM Default Alphabet,如為中文則是000010
    SMLen:Array[0..1] of Char;                     //短信息長(zhǎng)度
  end;

  TPDUSendRec = Record
    SMSCLength:Array[0..1] of Char;
    FirstOctet:Array[0..1] of Char;
    MessageReference:Array[0..1] of Char;
    PhoneLength:Array[0..1] of Char;
    AddressType:Array[0..1] of Char;
    Phone:Array[0..11] of Char;
    TPPID:Array[0..1] of Char;
    TPDCS:Array[0..1] of Char;
    TPValidityPeriod:Array[0..1] of Char;
    TPUserDataLength:Array[0..1] of Char;
    //TPUserData
  end;

  TPDUFirstReadRec = Record
    SMSCLength:Array[0..1] of Char;
    AddressType:Array[0..1] of Char;
    ServiceCenterNumber:Array[0..13] of Char;       //Length???
    FirstOctet:Array[0..1] of Char;

    SendPhoneLength:Array[0..1] of Char;
    SendPhoneType:Array[0..1] of Char;
//    TONNPI:Array[0..1] of Char;
    //Phone
  end;

  TPDUSecondReadRec = Record
    TPPID:Array[0..1] of Char;
    TPDCS:Array[0..1] of Char;
    TimeStamp:Array[0..13] of Char;
    TPUserDataLength:Array[0..1] of Char;
    //TPUserData
  end;

  function HexToInt(HexStr:String):Integer;
  function ChangeOrder(OriStr:String;TotalLen:Integer):String;
  function ResumeOrder(OriStr:String):String;

  function EncodeEnglish(s:String):String;
  function DecodeEnglish(s:String):String;

  function Encode8Bits(s:String):String;
  function Decode8Bits(s:String):String;

  function EncodeUniCode(s:WideString):String;
  function DecodeUniCode(s:String):WideString;

  Function Mix2PDU(CenterNumber,CalledNumber,ShortMsg:String):String;
  function MixSendPDU(Phone,ShortMsg:String;Var SendLen:String;SMType:Integer):String;
  function DisposeReadPDU(PDUData:String;Var Phone,MsgContent:String):Integer;

implementation

function ChangeOrder(OriStr:String;TotalLen:Integer):String;
var
  i:Integer;
  TempStr:String;
begin
  OriStr:=OriStr+Copy('FFFFFFFFFF',1,TotalLen-Length(OriStr));

  TempStr:='';
  for i:=1 to (TotalLen Div 2) do
    TempStr:=TempStr+OriStr[i*2]+OriStr[i*2-1];

  Result:=TempStr;
end;

function ResumeOrder(OriStr:String):String;
var
  i:Integer;
  TempStr:String;
begin
  TempStr:='';
  for i:=1 to (Length(OriStr) Div 2) do
    TempStr:=TempStr+OriStr[i*2]+OriStr[i*2-1];

  Result:=StringReplace(TempStr,'F','',[rfReplaceAll]);
end;

Function Mix2PDU(CenterNumber,CalledNumber,ShortMsg:String):String;
var
  TempStr,MsgContent:String;
  PDURec:TPDUFormatRec;
begin
  PDURec.CenterLen := '08';
  PDURec.CenterType := '91';
  TempStr := ChangeOrder(CenterNumber,14);
  Move(TempStr[1],PDURec.CenterNumber[0],14);

  PDURec.FileHeader := '11';
  PDURec.SMType := '00';
  PDURec.CalledLen := '0B';
  PDURec.CalledType := '81';

  TempStr := ChangeOrder(CalledNumber,12);
  Move(TempStr[1],PDURec.CalledNumber[0],12);

  PDURec.SMCodeType := '0000A7';


  MsgContent := EnCodeUniCode(ShortMsg);
  Move(IntToHex(Length(ShortMsg),2)[1],PDURec.SMLen[0],2);

  SetLength(Result,SizeOf(PDURec));
  Move(PDURec,Result[1],SizeOf(PDURec));
  Result:=Result+MsgContent;
end;

function EncodeUniCode(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轉(zhuǎn)換

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

    Result:=Result+IntToHex(Cur,4)+' ';
    inc(i);
  end;
end;

function DecodeUniCode(s:String):WideString;
var
  p:PWord;
  i,len:Integer;
  cur:Integer;
  TempChar:WideChar;
  t:String;
begin
  New(p);

  Result:='';
  len:=Length(s) div 4;
  i:=1;

  for i:=0 to Len-1 do
  begin
    t:=Copy(s,4*i+1,4);
    p^:=HexToInt(t);

    Move(p^,TempChar,2);
    Result:=Result+TempChar;
  end;

  Dispose(p);
end;

function MixSendPDU(Phone,ShortMsg:String;Var SendLen:String;SMType:Integer):String;
var
  PDUSendRec:TPDUSendRec;
  TempStr:String;
begin
  PDUSendRec.SMSCLength := '00';
  PDUSendRec.FirstOctet := '11';
  PDUSendRec.MessageReference := '00';
  PDUSendRec.PhoneLength := '0B';
  PDUSendRec.AddressType := '91';

  TempStr:=ChangeOrder(Phone,12);
  Move(TempStr[1],PDUSendRec.Phone[0],12);

  PDUSendRec.TPPID := '00';

  Case SMType of
    0://Englsih
      PDUSendRec.TPDCS := '00';
    4://8Bits
      PDUSendRec.TPDCS := '04';
    else //Chinese
      PDUSendRec.TPDCS := '08';
  end;

  PDUSendRec.TPValidityPeriod := 'AA';

  Case SMType of
    0://Englsih
    begin
      Move(IntToHex(Length(ShortMsg),2)[1],PDUSendRec.TPUserDataLength[0],2);
      SetLength(Result,SizeOf(PDUSendRec));
      Move(PDUSendRec,Result[1],SizeOf(PDUSendRec));
      Result:=Result+EncodeEnglish(ShorTMsg);
      SendLen:=IntToStr((Length(Result)-2) Div 2);
    end;

    4://8Bits
    begin
      Move(IntToHex(Length(ShortMsg),2)[1],PDUSendRec.TPUserDataLength[0],2);
      SetLength(Result,SizeOf(PDUSendRec));
      Move(PDUSendRec,Result[1],SizeOf(PDUSendRec));
      Result:=Result+Encode8Bits(ShorTMsg);
      SendLen:=IntToStr((Length(Result)-2) Div 2);
    end;

    else //Chinese
    begin
      //TempStr:=EnCodeUniCode(ShortMsg);
      TempStr:= ShortMsg;
      Move(IntToHex(Length(TempStr) Div 2,2)[1],PDUSendRec.TPUserDataLength[0],2);
      SetLength(Result,SizeOf(PDUSendRec));
      Move(PDUSendRec,Result[1],SizeOf(PDUSendRec));
      Result:=Result+TempStr;
      SendLen:=IntToStr((Length(Result)-2) Div 2);
    end;
  end;
end;

function EncodeEnglish(s:String):String;
var
  i,j,len:Integer;
  cur,Int1:Integer;
begin
  len:=Length(s);

  //j 用于移位計(jì)數(shù)
  i:=1;
  j:=0;

  while i<=len do
  begin
    if i<len then
      //數(shù)據(jù)變換
      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;

    Result:=Result+IntToHex(cur,2);
    inc(i);

    //移位計(jì)數(shù)達(dá)到7位的特別處理
    j:=(j+1) mod 7;
    if j=0 then inc(i);
  end;
end;

function DecodeEnglish(s:String):String;
var
  i,j,len:Integer;
  TempIntArray:Array of Integer;
  TempStr:String;
  cur,Int1:Integer;
begin
  len:=Length(s) div 2;
  SetLength(TempIntArray,Len);

  for i:=0 to Len-1 do
  begin
    TempStr:=Copy(s,i*2+1,2);
    TempIntArray[i]:=HexToInt(TempStr);
  end;

  //j 用于移位計(jì)數(shù)
  i:=0;
  j:=0;

  while i<=len-1 do
  begin
    if i<>0 then
      //數(shù)據(jù)變換
      cur:=((TempIntArray[i] shl j) and $7f) or (TempIntArray[i-1] shr (8-j))
    else
      cur:=(TempIntArray[i] shl j) and $7f;

    Result:=Result+Chr(cur);

    //移位計(jì)數(shù)達(dá)到7位的特別處理
    j:=(j+1) mod 7;
    if j=0 then
    begin
      cur:=TempIntArray[i] shr 1;
      Result:=Result+Chr(cur);
    end;

    inc(i);
  end;
end;

function DisposeReadPDU(PDUData:String;Var Phone,MsgContent:String):Integer;
var
  TempInt,Len:Integer;
  FirstReadRec:TPDUFirstReadRec;
  SecondReadRec:TPDUSecondReadRec;
  TempStr:String;
begin
  //First Read Record
  Move(PDUData[1],FirstReadRec,SizeOf(FirstReadRec));
  TempInt:=HexToInt(FirstReadRec.SendPhoneLength);
  if (TempInt mod 2 = 1) then
    Inc(TempInt);

  //Phone
  Phone:=Copy(PDUData,SizeOf(FirstReadRec)+1,TempInt);
  Phone:=ResumeOrder(Phone);

  //Second Read Record
  Move(PDUData[SizeOf(FirstReadRec)+TempInt+1],SecondReadRec,SizeOf(SecondReadRec));

  //Message Length
  Len:=HexToInt(SecondReadRec.TPUserDataLength)*2;

  //Short Message Content
  TempStr:=Copy(PDUData,SizeOf(FirstReadRec)+TempInt+SizeOf(SecondReadRec)+1,Len);

  Case HexToInt(SecondReadRec.TPDCS) of
    0..3://7 Bits
    begin
      MsgContent:=DecodeEnglish(TempStr);
    end;

    4..7://8 Bits
    begin
      MsgContent:=Decode8Bits(TempStr);
    end;

    8..11://UniCode
    begin
      MsgContent:=DecodeUniCode(TempStr);
    end;

    else
    begin
      Result:=1;          //type Error
      Exit;
    end;
  end;
end;

function HexToInt(HexStr:String):Integer;
var
  i,TempInt,LocalInt:Integer;
begin
  HexStr:=UpperCase(HexStr);

  LocalInt:=1;
  Result:=0;
  for i:=Length(HexStr) downto 1 do
  begin
    if HexStr[i] in ['0'..'9'] then
      TempInt:=StrToInt(HexStr[i])
    else
      TempInt:=Ord(HexStr[i])-Ord('A')+10;

    if i=Length(HexStr) then
      LocalInt:=1
    else
      LocalInt:=LocalInt*16;

    Result:=Result+TempInt*LocalInt;
  end;
end;

function Encode8Bits(s:String):String;
var
  i:Integer;
begin
  Result:='';
  for i:=1 to Length(s) do
    Result:=Result+IntToHex(Ord(s[i]),2);
end;

function Decode8Bits(s:String):String;
var
  i,Len:Integer;
  TempStr:String;
begin
  Result:='';
  Len:=Length(s) Div 2;

  for i:=0 to Len-1 do
  begin
    TempStr:=Copy(s,i*2+1,2);

    Result:=Result+Chr(HexToInt(TempStr));
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆91在线播放免费| 美腿丝袜在线亚洲一区| 国产精品女同一区二区三区| 久久99精品久久久久婷婷| 免费精品视频在线| 亚洲一区二区三区视频在线播放| **欧美大码日韩| 国产精品网站一区| 国产精品亲子伦对白| 中文字幕av一区二区三区| 亚洲国产精品黑人久久久| 中文一区一区三区高中清不卡| 欧美激情中文不卡| 国产精品久久久久久久久久久免费看 | 亚洲伊人色欲综合网| 伊人婷婷欧美激情| 亚洲va韩国va欧美va精品| 性久久久久久久久久久久| 视频一区视频二区中文字幕| 日本成人在线看| 国内偷窥港台综合视频在线播放| 日韩欧美在线一区二区三区| 久久精品人人做| 国产偷v国产偷v亚洲高清| 久久久久久久久久久电影| 亚洲国产精华液网站w| 国产精品成人网| 一级特黄大欧美久久久| 婷婷成人激情在线网| 久久精品国产精品青草| 国产高清不卡二三区| 91小视频在线免费看| 欧洲一区在线观看| 日韩欧美一二三区| 中文字幕国产一区| 一二三四社区欧美黄| 青椒成人免费视频| 国产91丝袜在线18| 在线日韩av片| 欧美videossexotv100| 中文字幕免费不卡| 亚洲成人免费影院| 国产麻豆日韩欧美久久| 色狠狠色噜噜噜综合网| 九一久久久久久| 日韩高清国产一区在线| 日韩国产欧美三级| 成人小视频在线| 欧美日韩的一区二区| 国产丝袜在线精品| 亚洲大型综合色站| 国产成人鲁色资源国产91色综 | 奇米综合一区二区三区精品视频| 久久aⅴ国产欧美74aaa| 91网站最新网址| 日韩欧美成人一区| 日韩码欧中文字| 激情文学综合插| 欧美色网一区二区| 国产精品美女www爽爽爽| 日本视频免费一区| 色狠狠一区二区| 国产日韩精品视频一区| 日产国产高清一区二区三区| av在线不卡电影| 亚洲精品在线一区二区| av一本久道久久综合久久鬼色| 色又黄又爽网站www久久| 精品国产乱码久久久久久图片| 亚洲精品水蜜桃| 国产aⅴ精品一区二区三区色成熟| 91福利国产精品| 亚洲国产精品高清| 狠狠色综合色综合网络| 欧美日韩在线三级| 亚洲乱码一区二区三区在线观看| 国产一区二区美女| 欧美一区二区三区四区久久| 一区二区三区在线免费播放| 国产成人欧美日韩在线电影| 欧美一级夜夜爽| 亚洲成av人影院| 一本久久a久久精品亚洲| 国产女主播在线一区二区| 久久国产精品无码网站| 欧美精品高清视频| 亚洲福利一二三区| 欧美一a一片一级一片| 亚洲欧洲日产国码二区| 成人一区二区三区视频在线观看 | 国产日韩欧美亚洲| 精品在线一区二区三区| 日韩一区二区电影网| 亚洲成av人片在线| 国产99精品国产| 91精品国产色综合久久不卡蜜臀 | 欧美日韩aaaaaa| 一区二区免费在线播放| 91网站在线播放| 中文字幕一区二区三区色视频 | 欧美日韩夫妻久久| 亚洲一区二区三区三| 91久久精品网| 一区二区三区.www| 欧美亚洲综合一区| 一区二区三区日韩精品| 在线精品视频免费观看| 一区二区三区成人在线视频| 91精品办公室少妇高潮对白| 一区二区成人在线| 欧美日韩黄色影视| 美日韩一区二区| 久久综合久久鬼色| 国产成人综合在线| 国产精品视频你懂的| 99久久精品情趣| 亚洲在线免费播放| 欧美裸体一区二区三区| 午夜国产不卡在线观看视频| 宅男在线国产精品| 精品亚洲欧美一区| 欧美—级在线免费片| 亚洲午夜久久久久| 久久黄色级2电影| 久久亚洲私人国产精品va媚药| 国产一区二区三区四区五区美女| 国产午夜亚洲精品羞羞网站| www.成人网.com| 亚洲国产视频一区二区| 欧美午夜精品理论片a级按摩| 日日欢夜夜爽一区| 久久女同精品一区二区| 成a人片国产精品| 亚洲国产婷婷综合在线精品| 日韩亚洲欧美综合| 丁香另类激情小说| 亚洲永久免费av| 日韩欧美三级在线| av不卡在线观看| 首页亚洲欧美制服丝腿| 久久婷婷国产综合精品青草| 99久久99久久精品免费看蜜桃| 亚洲成人精品影院| 国产校园另类小说区| 欧美亚洲自拍偷拍| 国产综合久久久久久鬼色| 亚洲天堂2016| 日韩精品一区二区三区中文不卡| 丰满放荡岳乱妇91ww| 天天色天天操综合| 国产网红主播福利一区二区| 欧美在线观看18| 国产精品综合网| 亚洲一区免费在线观看| 久久久久成人黄色影片| 欧美综合一区二区三区| 国产激情一区二区三区四区| 亚洲国产精品自拍| 国产欧美一区在线| 91 com成人网| 91色视频在线| 狠狠色狠狠色综合系列| 亚洲一二三四久久| 欧美国产日韩一二三区| 在线不卡一区二区| 97精品视频在线观看自产线路二| 久久精品免费看| 亚洲一区二区三区四区在线 | 一本久久综合亚洲鲁鲁五月天| 麻豆成人免费电影| 一区二区三区av电影| 国产午夜精品一区二区三区视频 | 中文字幕乱码一区二区免费| 91精品国产91久久久久久最新毛片 | 久久精品视频一区二区三区| 欧美亚洲一区二区在线| 国产成人av电影免费在线观看| 日韩和欧美的一区| 亚洲激情校园春色| 亚洲国产精品黑人久久久| 日韩美女在线视频| 欧美制服丝袜第一页| 成人蜜臀av电影| 国产一区二区美女| 麻豆精品国产91久久久久久| 亚洲电影视频在线| 亚洲欧美另类图片小说| 欧美国产精品久久| 久久精品在这里| 亚洲精品一区二区精华| 日韩欧美在线123| 6080午夜不卡| 欧美美女bb生活片| 欧美精品一卡二卡| 欧美三级日韩三级| 欧美曰成人黄网| 欧美在线播放高清精品| 91国偷自产一区二区三区成为亚洲经典 | 一区二区三区不卡在线观看| 亚洲色图在线看|