äÁ ÅÝÅ Ô.Ë. ×ÓÅÖ ÈÏÔÅÌÏÓØ ÓÜËÏÎÏÍÉÔØ ÎÁ ÍÅÓÔÅ ÒÁÚ ÕÖ ÏÔ ÐÏÒÑÄËÁ ÎÉÞÅÇÏ ÎÅ 
ÚÁÍÉÓÉÔ.
òÅÛÉÌ ÐÏÓÍÏÔÒÅÔØ PackGUID ÔÁÍ ÅÓÔØ ÎÅÔÏÞÎÏÓÔÉ

function NxPackGUID (AGUID : TGUID) : string;
var
  A : packed array [0..16] of byte absolute AGUID;

ÄÏÌÖÎÏ ÂÙÔØ  0..15 Ô.Ë. TGUID 16 ÂÁÊÔ

          N := ((A [P] and $07) shl 2) or ((A [succ (P)] and $C0) shr 6);

Ñ ÔÁË ÐÏÎÉÍÁÀ succ (P) ÎÁÄÏ ÔÏÖÅ ËÏÔÒÏÌÉÒÏ×ÁÔØ ÐÏÜÔÏÍÕ ÄÏÌÖÎÏ ÂÙÔØ ÔÁË
          N := ((A [P] and $07) shl 2);

        if P <= 14
          then N := N or ((A [succ (P)] and $C0) shr 6);

ÄÁÂÙ ÎÅ ÐÏÊÍÁÔØ ÍÕÓÏÒ × 17 ÂÁÊÔÅ ;)

PS ÐÏÔÏÍ ÐÏÞÅÍÕÔÏ ÓÔÒÁÎÎÏÅ ÏÂÒÅÚÁÎÉÅ ÃÉÆÒÏ×ÏÊ ÞÁÓÔÉ, ÏÒÁÔÎÏÅ ÐÏÎÉÍÁÎÉÅ 
ÒÁÓÐÏÌÏÖÅÎÉÅ ÂÉÔÏ× ÐÒÉÎÑÔØ ÓÞÉÔÁÔØ ÐÅÒ×ÙÍ ÂÉÔÏÍ ÒÁ×ÙÊ. ïÂÙÞÎÏ ÐÒÉÎÑÔÏ 
ÉÓÐÏÌØÚÏ×ÁÔØ ÞÉÓÌÁ ÐÏÌÎÏÓÔØÀ Á ÔÁÍ ÐÏÞÅÍÕÔÏ ÔÏÌØËÏ ÄÏ 6. ðÏÒÙÌÓÑ × ÎÅÔÅ 
ÎÉÞÅÇÏ ÕÍÎÏÇÏ ÐÏ ÐÏ×ÏÄÕ ÐÁËÏ×ËÉ ÎÅÎÁÛÅÌ. ìÁÄÎÏ ÆÉÇÎÑ ÜÔÏ ×ÓÅ. ëÏÍÕ ÉÎÔÅÒÅÓÎÏ 
Ñ ÎÁÐÉÓÁÌ 2 ×ÁÒÉÁÎÔÁ ÐÁËÏ×ÏË GUID ÐÏ ËÏÄÉÒÏ×ËÁÍ Ó ÕÞÅÔÏÍ ÒÁÓÐÏÌÏÖÅÎÉÑ ÂÉÔ.
32 ÚÎÁËÁ
//  LetersPack26 = '0123456789ABCDEFGHIJKLMNOPQRSTUV';
ÐÁËÕÅÔÓÑ ÄÏ 26 ÚÎÁËÏ×

64 ÚÎÁËÁ
//  LetersPack22 = 
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+';
ÐÁËÕÅÔÓÑ ÄÏ 22 ÚÎÁËÏ× (4 ÚÎÁËÁ ÜÔÏ ÎÅÍÁÌÏ ÏÄÎÁËÏ)
É ÅÄÉÎÁÑ ÆÕÎËÃÉÑ ËÏÔÏÒÁÑ ÌÅÇËÏ ÒÁÓÐÁËÏ×Ù×ÁÅÔ 22, 26, 36
ÍÏÇÕ ×ÙÌÏÖÉÔØ. 



Ответить