ืืืื ืืื ืืื ืืขืฉืจืืื ืืืื
ืืืึทื ื ืืืจ ืืืขืื ืคึผืจืืืืจื ืฆื ืืจืึธืื ืึท ืืืกื ืืืคึผืขืจ ืืื ืงืืง ืืื ืื LSB ืึทืืืขืจืืืึทื. ืืืื ืืืจ ืืขื ื ืืื ืืขืจืขืกืืจื, ืืืจ ืืขื ื ืืึทืืจืืกื ืืื ืืขืจ ืงืึทืฅ. (ืืื ืืขืจ ืื ืืืจืืฉื ืื ืืื ืคืึทืจืงืขืจ: ืืืขืื ืึท ืืขืืืืืื.)
ืขืจืฉืืขืจ ืคืื ืึทืืข, ืขืก ืืื ื ืืืืืง ืฆื ืืึทืื ืึท ืงืืจืฅ ืืงืืื. ืึทืืขืืขื ืืืืืกื ืึทื ืืขืจ ืฆืื ืคืื ืงืจืืคึผืืึธืืจืึทืคื ืืื ืฆื ืืึทืื ืขืก ืืืืืขืืืขื ืฆื ืืืืขื ืขื ืกืื ืืื ืคึฟืึธืจืืึทืฆืืข. ืคืื ืงืืจืก, ืงืจืืคึผืืึธืืจืึทืคื ืืื ืืืึทื ืึทืคึผืืึทืงืืืฉืึทื ื, ืึธืืขืจ ืขืก ืืื ืื ืื ืืขืจ ืฆืืืึทื ื ืฆื ืืึทืื ืฉืืฅ. ืืืจ ืืึธื ื ืื ืืึธืื ืฆื ืขื ืงืจืืคึผื ืื ืืื ืคึฟืึธืจืืึทืฆืืข, ืึธืืขืจ ืคืึทืจืืืื ืึทื ืืืจ ืืึธื ื ืื ืืึธืื ืขืก. ืืึธืก ืืื ืคึผืื ืงื ืืืึธืก ืกืืขืืึทื ืึธืืจืึทืคื ืืื ืื ืืืขื ืืึทื. ืืืืงืืคืขืืืข ืคืืจืืืืขืจื ืืื ืื ืึทื "ืกืืขืืึทื ืึธืืจืึทืคื (ืคืื ืื ืืจืืืืฉ ฯฯฮตฮณฮฑฮฝฮฟฯ - ืคืึทืจืืึธืจืื ืืื ืื ืืจืืืืฉ ฮณฯฮฑฯฯ - ืืื ืฉืจืืึทืื, ืืืฉ "ืกืื ืฉืจืืืื") ืืื ืื ืืืืกื ืฉืึทืคึฟื ืคืื ืื ืคืึทืจืืึธืจืื ืืจืึทื ืกืืืกืืข ืคืื โโืืื ืคึฟืึธืจืืึทืฆืืข ืืืจื ืืขืืขืกืงืขื ืื ืคืึทืงื ืคืื ืืจืึทื ืกืืืกืืข ืกืื.
ืคืื ืงืืจืก, ืงืืื ืืืื ืขืจ ืคืึทืจืืืขืจื ืงืึทืืืืื ืื ื ืงืจืืคึผืืึธืืจืึทืคืืง ืืื ืกืืขืืึทื ืึธืืจืึทืคืืง ืืขืืืึธืืก. ืืขืจืฆื, ืืื ืคืืจ ืืื ืืึธื ืืึธืก, ืึธืืขืจ ืืื ืืืขืจ ืึทืจืืขื ืืื ืฆื ืคึฟืึทืจืฉืืืื ืื ืืึทืกืืงืก. ืืืื ืืืจ ืงืขืจืคืึทืื ืืขืจื ืขื ืืขื ืืืืงืืคึผืขืืืข ืึทืจืืืงื, ืืืจ ืืืขื ืืขืคึฟืื ืขื ืึทื ืกืืขืืึทื ืึธืืจืึทืคื ืึทืืืขืจืืืึทืื ืึทืจืืึทื ื ืขืืขื ืื ืึทืืื-ืืขืจืืคึฟื. ืงืึทื ืืืื ืขืจ ืืื ืึธื ืืึธื. ื ืงืึทื ืืืื ืขืจ ืืื ืงืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืึธืก ืืขืืคึผืก ืืึทืืึทืืื ืืื ืืืขืจ ืกืื ืึธื ืืึธื.
ืืื ืืื ืืืขืจ ืคืึทื, ืืขืจ ืงืึทื ืืืื ืขืจ ืืืขื ืืืื ืึท ืืืื ืืื BMP ืคึฟืึธืจืืึทื. ืขืจืฉืืขืจ, ืืึธืื ืก ืงืืง ืืื ืื ืกืืจืืงืืืจ ืคืื ืืขื ืืขืงืข. ืืขืจ ืืขืงืข ืงืขื ืขื ืืืื ืฆืขืืืืื ืืื 4 ืคึผืึทืจืฅ: ืืขืงืข ืืขืืขืจ, ืืืื ืืขืืขืจ, ืคึผืึทืืืืจืข ืืื ืื ืืืื ืืื. ืคึฟืึทืจ ืืื ืืืขืจ ืฆืืืขืงื, ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ืืืืกื ืืืึธืก ืืื ืืขืฉืจืืื ืืื ืื ืืขืืขืจ.
ืื ืขืจืฉืืข ืฆืืืื ืืืืขืก ืคืื ืืขื ืืขืืขืจ ืืขื ืขื ืื BM ืืกืืืข, ืืขืจื ืึธื ืื ืืขืงืข ืืจืืืก ืืื ืืืืขืก ืืื ืืขืฉืจืืื ืืื ืึท ืืึธืคึผื ืืืึธืจื, ืื ืืืืึทืืขืจ 4 ืืืืขืก ืืขื ืขื ืจืขืืขืจืืืืจื ืืื ืืืื ืึทื ืืืึทืืื ืืขืจืึธืก, ืืื ืืขืกืึธืฃ ืื ืื ืืขืจ ืืึธืคึผื ืืืึธืจื ืึผืืื ืื ืคืึธืืึธ ืคืื ืื ืึธื ืืืื ืคืื ืื ืืขืืขืจ. ืืขืงืข ืฆื ืื ืคืึทืงืืืฉ ืืืืขืก ืคืื ืื ืืืื. ืืื ืึท 24-ืืืกื ืืืคึผ ืืขืงืข, ืืขืืขืจ ืคึผืืงืกืขื ืืื ืงืึธืืขื ืืื ืืจืื BGR ืืืืขืก.
ืืืฆื ืืืจ ืืืืกื ืืื ืฆื ืืึทืงืืืขื ืฆื ืืขื ืืืื, ืึทืืข ืืืึธืก ืืืืืื ืืื ืฆื ืคึฟืึทืจืฉืืืื ืืื ืืืจ ืงืขื ืขื ืฉืจืืึทืื ืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืจ ืืึทืจืคึฟื ืืึธืจื. ืคึฟืึทืจ ืืขื ืืืจ ืืึทืจืคึฟื ืื LSB ืืืคึฟื. ืื ืขืกืึทื ืก ืคืื ืืขื ืืืคึฟื ืืื ืืื ืืืื: ืืืจ ืคืึทืจืืืึทืื ืื ืงืืขื ืกืืขืจ ืืึทืืืืืืง ืืืื ืืื ืื ืืืืขืก ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืงืึธืืืจ ืงืึธืืืจืื ื. ืืื ืก ืืึธืื ืืืื ืืขืจ ืืืืึทืืขืจ ืืืืข ืคืื โโืืื ืืืขืจ ืกืื ืึธื ืืึธื ืืื 11001011, ืืื ืื ืืืืขืก ืืื ืื ืืืื ืืขื ืขื ... 11101100 01001110 01111100 0101100111 ..., ืื ืงืึธืืืจืื ื ืืืขื ืงืืงื ืืื ืืึธืก. ืืืจ ืืืขืื ืฉืคึผืึทืืื ืื ืกืื ืึธื ืืึธื ืืืื ืืื 4 ืฆืืืื-ืืืกื ืคึผืึทืจืฅ: 11, 00, 10, 11, ืืื ืคืึทืจืืืึทืื ืื ื ืืืขืจืืง-ืกืืจ ืืืื ืคืื ืื ืืืื ืืื ืื ืจืืืึทืืืื ื ืคืจืึทืืืึทื ืฅ: ...11101111 01001100 01111110 0101100111โฆ. ืึทืืึท ืึท ืคืึทืจืืืึทื ืืื ืืืื ื ืืฉื ืืืืขืจืงื ืฆื ืื ืืขื ืืฉืืขื ืืืื. ืืขืจืฆื, ืคืืืข ืขืืืขืจืข ืคึผืจืึธืืืงืฆืืข ืืขืืืืกืขืก ืืืขื ื ืืฉื ืืคืืื ืงืขื ืขื ืฆื ืืืืึทืื ืึทืืึท ืืื ืขืจืืืขืจืืืง ืขื ืืขืจืื ืืขื.
ืขืก ืืื ืงืืึธืจ ืึทื ืืืจ ืงืขื ืขื ืืืืฉื ื ืื ืืืืื ืื 2 ืงืืขื ืกืืขืจ ืืึทืืืืืืง ืืืื, ืึธืืขืจ ืงืืื ื ืืืขืจ ืคืื ืืื. ืขืก ืืื ืื ืคืืืืขื ืืข ืืืกืืขืจ: ืื ืืขืจ ืืืื ืืืจ ืืืืฉื, ืื ืืขืจ ืืื ืคึฟืึธืจืืึทืฆืืข ืืืจ ืงืขื ืขื ืืึทืืึทืืื, ืืื ืื ืืขืจ ืื ืืขืจืคืืจืึทื ืก ืืึธืก ืืืขื ืคืึทืจืฉืึทืคื ืืื ืืขืจ ืึธืจืืืื ืขื ืืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืึธ ืืขื ืขื ืฆืืืื ืืืืืขืจ:
ืืจืึธืฅ ืืืื ืืขืกืืขืจ ืืฉืชืืืืช, ืืื ืงืขื ื ืืฉื ืืขื ืื ืืืืืง ืฆืืืืฉื ืืื, ืึธืืขืจ ืคืื ืืขืกืืืืขืื, ืืื ืื ืจืืข ืืืื, ืืื ืื ืืืกืงืจืืืื ืืืคึฟื, ืืืืก ืงืึทืจืึธื ืก ืืื "ืื ืืืืขื ืคืื ืื ืกื ืึทืจืง" ืืื ืคืึทืจืืึธืจืื. ืืืื ืืืจ ืืึธื ืืืืขื ืขื ืึทืืื ืืืืึทื, ืืืจ ืืขื ื ืืืกืืึธืืข ืืื ืืขืจืขืกืืจื ืฆื ืืขืจื ืขื ืืืขืื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื. ืขืก ืืื ืืึทื ืฅ ืคึผืฉืื, ืึธืืขืจ ืืื ืืืขื ืืืึธืจืขื ืขื ืืืจ ืืืืื ืึทื ืึทืืฅ ืืื ืืขืืื ืืื ืืขืืคื. ืขืก ืืขื ืขื ืฆืืืื ืกืืืืช ืคึฟืึทืจ ืืขื: 1. ืืื ืืจืึทืืื ืืขืืคื ืืื ืึท ืืื ืฉืคึผืจืึทื; 2. ืื ืคึผืจืึธืืจืึทื ืืื ืืขืืืืจื ืืื ืืขื ืคึผืจืึธืฆืขืก ืคืื ืฆืืืจืืืื ืึท ืงืืจืก ืืืืฃ ืื ืืึทืกืืงืก ืคืื ืงืึธืืคึผืืืืขืจ ืืขืืื ื, ืืื ืื ืืืื ืฆื ืืืขืืขื ืืื ืืขืจื ืขื ืืขื ืงืืจืก ืืึธื ื ืื ืืืืกื ื ืึธื ืืึธืจื ืืฉื ืึทื ืืขืจืฉ ืืื ืืขืืคื. ืคืืจ ืื ืืืืก ืืขื ืขื ื ืืฉื ืืืงืื ื ืืื ืืขื ืกืื ืืืงืก, ืืืจืฃ ืืขื ืืกืืืจ ืืืื ืืืื ืืื: shl x ืืื ื ืืืืืืืื ืฉืืคื ืืืืฃ ืืื ืงืก ืืื x, shr x ืืื ื ืืืืืืืื ืฉืืคื ืฆื ืจืขืืืก ืืื x.
ืืืจ ืืืขืจื ืขืืขื ืึทื ืืืจ ืฉืจืืึทืื ืืขืงืกื ืกืืึธืจื ืืื ืึท ืฉืืจืืงื ืืื ืืขื ืงืึทื ืืืื ืขืจ ืืื ืจืืคึผืืืืกื ืื ื ืืืขืจืืงืขืจ ืฆืืืื ืืืืขืก:
ืจืขืงืึธืจืืื ื ืงืึธื:
ืคึฟืึทืจ ืืื:=1 ืฆื ืืขื ื (ืกืืจ) ืืึธื
ืึธื ืืืืื
ื1:=ืืืื (ืกืืจ[ื]) ืฉืจ 6;
l2:=byte(str[i]) shl 2; l2:=l2 shr 6;
l3:=byte(str[i]) shl 4; l3:=l3 shr 6;
l4:=byte(str[i]) shl 6; l4:=l4 shr 6;
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
ืค.ืคึผืึธืืืืืึธื:=ืค.ืคึผืึธืืืฆืืข-1;
ืืืคึผ:=((ืืืคึผ ืฉืจ 2) ืฉื 2)+ื1;
f.WriteBuffer (ืืืคึผ, 1);
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
ืค.ืคึผืึธืืืืืึธื:=ืค.ืคึผืึธืืืฆืืข-1;
ืืืคึผ:=((ืืืคึผ ืฉืจ 2) ืฉื 2)+ื2;
f.WriteBuffer (ืืืคึผ, 1);
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
ืค.ืคึผืึธืืืืืึธื:=ืค.ืคึผืึธืืืฆืืข-1;
ืืืคึผ:=((ืืืคึผ ืฉืจ 2) ืฉื 2)+ื3;
f.WriteBuffer (ืืืคึผ, 1);
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
ืค.ืคึผืึธืืืืืึธื:=ืค.ืคึผืึธืืืฆืืข-1;
ืืืคึผ:=((ืืืคึผ ืฉืจ 2) ืฉื 2)+ื4;
f.WriteBuffer (ืืืคึผ, 1);
ืกืืฃ;
ืงืึธื ืฆื ืืืืขื ืขื:
ืคึฟืึทืจ i:=1 ืฆื MsgSize ืืึธื
ืึธื ืืืืื
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
ื1:=ืืืคึผ ืฉื 6;
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
l2:=tmp shl 6; l2:=l2 shr 2;
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
l3:=tmp shl 6; l3:=l3 shr 4;
ืค. ืจืขืึทืืืึทืคืขืจ (ืืืคึผ, 1);
l4:=tmp shl 6; l4:=l4 shr 6;
ืกืืจ:=ืกืืจ+ืืฉืึทืจ(ื1+ื2+ื3+ื4);
ืกืืฃ;
ื ื, ืคึฟืึทืจ ืื ืืึทืงืข ืคืืื ืึธื ืขืก -
ืืื ืง ืืืจ.
ืืงืืจ: www.habr.com