เบกเบตเบ„เบฑเป‰เบ‡เบซเบ™เบถเปˆเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เบฝเบ™เบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ เบ›เบฐเบเบฒเบ”เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบชเบนเบ™. เปเบฅเบฐเบเบฒเบ™เบ•เบญเบšเบ™เบฑเป‰เบ™เป„เบ”เป‰เบญเบธเบ—เบดเบ”เบ•เบปเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ, เบ„เบท steganography. เปเบ™เปˆเบ™เบญเบ™, เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบซเบปเบงเบ‚เปเป‰เป€เบเบปเปˆเบฒเบ™เบฑเป‰เบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ steganography เปƒเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเบš. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบเบกเบ—เบตเปˆเบกเบตเบฎเบนเบšเปเบšเบšเป„เบŸเบฅเปŒ, เปเบ•เปˆเป€เบ›เบฑเบ™เป€เบเบกเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ pretty เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก.

เบกเบทเป‰โ€‹เบ™เบตเป‰โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ‚เบธเบ”โ€‹เบ„เบปเป‰เบ™โ€‹เป€เบฅเบดเบโ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹เปเบฅเบฐโ€‹เป€เบšเบดเปˆเบ‡ LSB algorithmโ€‹. เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆ, เบ—เปˆเบฒเบ™เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบšเบžเบฒเบเปƒเบ•เป‰ cat. (เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบ•เบฑเบ”เปเบกเปˆเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™: เบ›เบฐเบกเบฒเบ™ megabyte.)

เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบชเบฑเป‰เบ™. เบ—เบธเบเบ„เบปเบ™เบฎเบนเป‰เบงเปˆเบฒเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบฑเบšเป„เบ”เป‰. เปเบ™เปˆเบ™เบญเบ™, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™, เปเบ•เปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบกเบนเบ™, เปเบ•เปˆเบ—เปเบฒเบ—เปˆเบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบกเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ steganography เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ”เบดเบ”. Wikipedia เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒ "steganography (เบˆเบฒเบเบเป€เบฃเบฑเบ ฯƒฯ„ฮตฮณฮฑฮฝฮฟฯƒ - เป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เปเบฅเบฐเบเป€เบฃเบฑเบ ฮณฯฮฑฯ†ฯ‰ - เบ‚เป‰เบญเบเบ‚เบฝเบ™, "เบเบฒเบ™เบ‚เบฝเบ™เบ„เบงเบฒเบกเบฅเบฑเบš") เปเบกเปˆเบ™เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เป‚เบ”เบเบเบฒเบ™เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบฅเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ‚เปเป‰เบกเบนเบ™.

เปเบ™เปˆเบ™เบญเบ™, เบšเปเปˆเบกเบตเปƒเบœเบซเป‰เบฒเบกเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™ cryptographic เปเบฅเบฐ steganographic. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเป€เบ‚เบปเบฒเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰, เปเบ•เปˆเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบžเบทเป‰เบ™เบ–เบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบถเบเบชเบฒเบšเบปเบ”เบ„เบงเบฒเบก Wikipedia เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”, เบ—เปˆเบฒเบ™เบˆเบฐเบžเบปเบšเบงเปˆเบฒ steganography algorithms เบ›เบฐเบเบญเบšเบกเบตเบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ. เบšเบฑเบ™เบˆเบธเปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบก. เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†เบ—เบตเปˆเบŠเปˆเบงเบเป€เบŠเบทเปˆเบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบˆเบฐเป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบšเปƒเบ™เบฎเบนเบšเปเบšเบš BMP. เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ™เบตเป‰. เป„เบŸเบฅเปŒเบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ 4 เบชเปˆเบงเบ™: เบซเบปเบงเป„เบŸเบฅเปŒ, เบซเบปเบงเบฎเบนเบšเบžเบฒเบš, palette เปเบฅเบฐเบฎเบนเบšเบžเบฒเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฝเบ™เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบง.

เบชเบญเบ‡ bytes เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ header เปเบกเปˆเบ™เบฅเบฒเบเป€เบŠเบฑเบ™ BM, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เบฐเบซเบ™เบฒเบ”เป„เบŸเบฅเปŒเปƒเบ™ bytes เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบชเบญเบ‡เบ„เปเบฒ, 4 bytes เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰เปเบฅเบฐเบ•เป‰เบญเบ‡เบกเบตเบชเบนเบ™, เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ, เบ„เปเบฒเบ„เบนเปˆเบญเบทเปˆเบ™เบกเบต offset เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡. เป„เบŸเบฅเปŒเป„เบ›เบซเบฒ bytes เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš. เปƒเบ™เป„เบŸเบฅเปŒ bmp 24-bit, เปเบ•เปˆเบฅเบฐ pixels เบˆเบฐเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ”เป‰เบงเบเบชเบฒเบก BGR bytes.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป„เบ›เบซเบฒเบฎเบนเบšเบžเบฒเบš, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™ LSB. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เปเบ—เบ™ bits เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™ bytes เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบชเบต. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ–เป‰เบฒ byte เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™ 11001011, เปเบฅเบฐ bytes เปƒเบ™เบฎเบนเบšเปเบกเปˆเบ™...11101100 01001110 01111100 0101100111..., เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปเบเบ byte เบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฑเบšเบญเบญเบเป€เบ›เบฑเบ™ 4 เบžเบฒเบเบชเปˆเบงเบ™เบชเบญเบ‡เบšเบดเบ”: 11, 00, 10, 11, เปเบฅเบฐเบ—เบปเบ”เปเบ—เบ™ bits เบ•เปˆเปเบฒเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบกเบต fragments เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš: ...11101111 01001100 01111110 0101100111โ€ฆ. เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบšเปเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบเบฑเบšเบ•เบฒเบ‚เบญเบ‡เบกเบฐเบ™เบธเบ”. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบญเบธเบ›เบฐเบเบญเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเป€เบเบปเปˆเบฒเปเบเปˆเบซเบผเบฒเบเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆ 2 bits เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เปเบ•เปˆเบˆเปเบฒเบ™เบงเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก. เบกเบตเบฎเบนเบšเปเบšเบšเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบซเบผเบฒเบเบšเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบŠเปˆเบญเบ™, เปเบฅเบฐเบเบฒเบ™เปเบŠเบเปเบŠเบ‡เบซเบผเบฒเบเบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบฎเบนเบšเบžเบฒเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบญเบ‡เบฎเบนเบšเบžเบฒเบš:

LSB steganography
LSB steganography

เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ‚เป‰เบญเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™, เปเบ•เปˆเบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเบชเบญเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบ, เบšเบปเบ”เบเบฐเบงเบตเบ‚เบญเบ‡ Lewis Carroll "เบเบฒเบ™เบฅเปˆเบฒเบชเบฑเบ”เบ‚เบญเบ‡ Snark" เป„เบ”เป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบญเปˆเบฒเบ™เบ™เบตเป‰เป„เบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”. เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเบ‚เป‰เบญเบเบˆเบฐเป€เบ•เบทเบญเบ™เป€เบˆเบปเป‰เบฒเบ—เบฑเบ™เบ—เบตเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™ Delphi. เบกเบตเบชเบญเบ‡เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰: 1. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒ Delphi เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบ”เบต; 2. เป‚เบ›เบฃเปเบเบกเบ™เบตเป‰เป€เบเบตเบ”เบกเบฒเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบฐเบเบฝเบกเบซเบผเบฑเบเบชเบนเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบงเบดเป„เบชเบ—เบฑเบ”, เบœเบนเป‰เบŠเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เบชเบญเบ™เบซเบผเบฑเบเบชเบนเบ”เบ™เบตเป‰เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบฎเบนเป‰เบซเบเบฑเบ‡เบ™เบญเบเบˆเบฒเบ Delphi. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš syntax, เบชเบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบ: shl x เปเบกเปˆเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเป„เบ›เบ—เบฒเบ‡เบŠเป‰เบฒเบเป‚เบ”เบ x, shr x เปเบกเปˆเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™ bitwise เป„เบ›เบ—เบฒเบ‡เบ‚เบงเบฒเป‚เบ”เบ x.

เบžเบงเบเป€เบฎเบปเบฒเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ string เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ container เปเบฅเบฐเบ›เปˆเบฝเบ™เปเบ—เบ™เบชเบญเบ‡ bytes เบ•เปˆเปเบฒ:
เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ:

เบชเปเบฒเบฅเบฑเบš i:=1 เบเบฑเบš length(str) เป€เบฎเบฑเบ”
    เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
      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 เป€เบฎเบฑเบ”
    เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
      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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™