ืคืขื ืืชืืชื ืืช ืฉืื
ืืืื ื ื ืกื ืืืคืืจ ืงืฆืช ืืืชืจ ืืขืืืง ืืืืกืชืื ืขื ืืืืืจืืชื LSB. ืื ืืชื ืืขืื ืืื, ืืชื ืืืืื ืชืืช ืืชืื. (ืืชืืช ืืงืืฆืืฅ ืืฉ ืชืขืืืจื: ืืขืจื ืืื ืืืื.)
ืงืืื ืื, ืืฉ ืฆืืจื ืืขืฉืืช ืืงืืื ืงืฆืจื. ืืืื ืืืืขืื ืฉืืืจืช ืืืฆืคื ื ืืื ืืืคืฉืจ ืืงืจืื ืืืืข ืกืืื. ืืืืื ืฉืืงืจืืคืืืืจืคืื ืืฉ ืืช ืืืืฉืืืื ืฉืื, ืืื ืืฉ ืืืฉื ืืืจืช ืืืื ื ืขื ื ืชืื ืื. ืื ืื ื ืื ืฆืจืืืื ืืืฆืคืื ืืช ืืืืืข, ืืื ืืืขืืื ืคื ืื ืฉืืื ืื ื ืืืชื. ืื ืืืืืง ืืกืืื ืฉืืกืืื ืืืจืคืื ืืืืฆืื. ืืืงืืคืืื ืืืืืื ืื ื ืฉ"ืกืืื ืืืจืคืื (ืืืืืื ืืช ฯฯฮตฮณฮฑฮฝฮฟฯ - ืืืกืชืจ ืืืืืืื ืืช ฮณฯฮฑฯฯ - ืื ื ืืืชื, ืคืฉืืื ืืืฉืืขื "ืืชืืื ืกืืืืช") ืืื ืืืืข ืฉื ืืขืืจืช ืืืืข ื ืกืชืจืช ืขื ืืื ืฉืืืจืช ืขืฆื ืืืขืืจื ืืกืื.
ืืืืื, ืืฃ ืืื ืื ืืืกืจ ืขื ืฉืืืื ืฉืืืืช ืงืจืืคืืืืจืคืืืช ืืกืืื ืืืจืคืืืช. ืืชืจื ืืื, ืืคืืขื ืื ืขืืฉืื ืืืช, ืืื ืืืฉืืื ืฉืื ื ืืื ืืืืื ืืช ืืืกืืืืช. ืื ืชืืื ืืืื ืืช ืืืืืจ ืืืืืงืืคืืื, ืชืืื ืฉืืืืืจืืชืืื ืกืืื ืืืจืคืืื ืืืืืื ืืช ืื ืฉื ืงืจื. ืืืื ืืืกืจ. ืงืื ืืืื ืจ ืืื ืื ืืืืข ืฉืขืืืจ ืืืกืชืืจ ืืช ืืืืืขื ืืกืืืืช ืฉืื ื.
ืืืงืจื ืฉืื ื, ืืงืื ืืืื ืจ ืืืื ืชืืื ื ืืคืืจืื BMP. ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ืืืื ื ืฉื ืืงืืืฅ ืืื. ื ืืชื ืืืืง ืืช ืืงืืืฅ ื-4 ืืืงืื: ืืืชืจืช ืงืืืฅ, ืืืชืจืช ืชืืื ื, ืคืืื ืืืชืืื ื ืขืฆืื. ืืืืจืืชืื ื, ืขืืื ื ืืืขืช ืจืง ืื ืืชืื ืืืืชืจืช.
ืฉื ื ืืืชืื ืืจืืฉืื ืื ืฉื ืืืืชืจืช ืื ืืชืืืช BM, ืืืืจ ืืื ืืืื ืืงืืืฅ ืืืชืื ื ืืชื ืืืืื ืืคืืื, 4 ืืืชืื ืืืืื ืฉืืืจืื ืืืืืืื ืืืืื ืืคืกืื, ืืืืกืืฃ, ืืืื ืืคืืื ื ืืกืคืช ืืืืื ืืช ืืืืกื ืืชืืืืช ื- ืืงืืืฅ ืืืืืืื ืืคืืขื ืฉื ืืชืืื ื. ืืงืืืฅ bmp ืฉื 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.
ืื ื ืื ืืืื ืฉืื ื ืืืชืืื ืืงืกื ืืืืืืกื ืืืืจืืืช ืืชืื ืืืืื ืืืืืืคืื ืืช ืฉื ื ืืืชืื ืืชืืชืื ืื:
ืงืื ืืงืืื:
ืขืืืจ i:=1 ื- length(str) do
ืืืชืืื
l1:=byte(str[i]) shr 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;
f.ReadBuffer(tmp,1);
f.Position:=f.Position-1;
tmp:=((tmp shr 2) shl 2)+l1;
f.WriteBuffer(tmp,1);
f.ReadBuffer(tmp,1);
f.Position:=f.Position-1;
tmp:=((tmp shr 2) shl 2)+l2;
f.WriteBuffer(tmp,1);
f.ReadBuffer(tmp,1);
f.Position:=f.Position-1;
tmp:=((tmp shr 2) shl 2)+l3;
f.WriteBuffer(tmp,1);
f.ReadBuffer(tmp,1);
f.Position:=f.Position-1;
tmp:=((tmp shr 2) shl 2)+l4;
f.WriteBuffer(tmp,1);
ืืกืืฃ;
ืงืื ืืงืจืืื:
ืขืืืจ i:=1 ื-MsgSize do
ืืืชืืื
f.ReadBuffer(tmp,1);
l1:=tmp shl 6;
f.ReadBuffer(tmp,1);
l2:=tmp shl 6; l2:=l2 shr 2;
f.ReadBuffer(tmp,1);
l3:=tmp shl 6; l3:=l3 shr 4;
f.ReadBuffer(tmp,1);
l4:=tmp shl 6; l4:=l4 shr 6;
str:=str+char(l1+l2+l3+l4);
ืืกืืฃ;
ืืืื, ืืขืฆืื ืื ืืืืช -
ืชืืื.
ืืงืืจ: www.habr.com