delphi4arab منتديات دلفي للعرب
Fast PDU Encode/Decode - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4)
+--- قسم : الامن و تحليل التطبيقات البرمجية (https://delphi4arab.net/forum/forumdisplay.php?fid=31)
+--- الموضوع : Fast PDU Encode/Decode (/showthread.php?tid=1767)



Fast PDU Encode/Decode - kachwahed - 09-03-2010

Protocol Description Unit -PDU
PDU Encode/Decode ترميز سريع وفك الترميز الصيغ PDU
كود :
procedure Bin2Hex(Buffer, Text: PChar; BufSize: Integer); assembler; const Convert: array[0..15] of Char = '0123456789ABCDEF'; p: array[1..7] of Byte = ($1, $3, $7, $F, $1F, $3F, $7F); var i, Count: Integer; c, Tmp, r: Byte; begin r:= Byte(Buffer[0]); Count:= 1; for i := 0 to BufSize - 1 do if Count < 8 then begin c:= r; if i < (BufSize - 1) then begin Tmp:= Byte(Buffer[I + 1]); r:= Tmp shr Count; c:= c or ((Tmp and p[Count]) shl (8 - Count)); Inc(Count); end; Text[0] := Convert[c shr 4]; Text[1] := Convert[c and $F]; Inc(Text, 2); end else begin Count:= 1; if i < BufSize then r:= Byte(Buffer[i + 1]); end; end; function Hex2Bin(Text, Buffer: PChar; BufSize: Integer): Integer; assembler; const Convert: array['0'..'f'] of SmallInt = ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,10,11,12,13,14,15); p: array[1..7] of Byte = ($7F, $3F, $1F, $F, $7, $3, $1); var i, Count: Integer; Tmp, c, r: Byte; begin I := BufSize; Count:= 1; while i > 0 do begin if not (Text[0] in ['0'..'f']) or not (Text[1] in ['0'..'f']) then Break; c:= (Convert[Text[0]] shl 4) + Convert[Text[1]]; tmp:= c shr (8 - Count); c:= c and p[Count]; if Count > 1 then c:= (c shl (Count - 1)) or r; r:= Tmp; Buffer[0] := Char(c); if Count = 7 then begin Inc(Buffer); Buffer[0] := Char(r); Count:= 1; end else Inc(Count); Inc(Buffer); Inc(Text, 2); Dec(i); end; Result := BufSize - i; end; function EncodePDU7bits(const Source: String): String; var Leng: Integer; begin Leng:= Length(Source); Leng:= (Leng * 2)- ((Leng div 8) * 2); SetLength(Result, Leng); Bin2Hex(PChar(Source), PChar(Result), Length(Source)); end; function DecodePDU7bits(const CodedStr: String): String; var Leng: Integer; begin Leng:= Length(CodedStr) div 2; SetLength(Result, Leng+ (Leng div 7)); Hex2Bin(PChar(CodedStr), PChar(Result), Leng); end;
الاستخدام:
كود :
procedure TForm1.Button1Click(Sender: TObject); begin Memo3.Text:= EncodePDU7bits(Memo1.Text); end; procedure TForm1.Button2Click(Sender: TObject); begin Memo2.Text:= DecodePDU7bits(Memo3.Text); end;
بالتوفيق.



Fast PDU Encode/Decode - o15s19 - 12-03-2010

مشكور جدا أخي الكريم بس لوكان تعطينا فكرة شوهو ال pdu
أنا بحثت شو ويبدو أن له علاقة برسائل ال sms في انظمة gsm بس الفكرة مو هون الفكرة كيفية الاسفادة منه؟؟؟


Fast PDU Encode/Decode - kachwahed - 12-03-2010

السلام عليكم
تحدث بالعربية حتى يفهمك الجميع Smile
إقتباس :شوهو ال pdu
يستخدم لترميز:
إقتباس :رسائل ال sms في انظمة gsm
إقتباس :كيفية الاسفادة منه؟؟؟
تخزين حجم أقل (حيث رسال SMS لا تتعدى 160 محرف)، واستخدام الأحرف اللاتينية فقط (دون الرموز).
إضافة إلى معلومات حول المرسل والرسالة.
للمزيد:
كود :
http://www.twit88.com/home/utility/sms-pdu-encode-decode
أيضا :google: و :thanks: على المشاركة Smile
ملحوظة: لا يدعم Unicode.
بالتوفيق.



Fast PDU Encode/Decode - o15s19 - 13-03-2010

ألف شكر لك اخي الكريم

أنا اتحدث العربي بس أخطاء مطبعية و أسف جدا

سلامي


RE: Fast PDU Encode/Decode - mohamed49 - 07-12-2016

جزاك الله خيرا على الافادة