Byte Stuffing

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 2

NAME:FORAM RAVAL

BEEXTCB-25
BYTE STUFFING
#include<iostream.h>
#include<conio.h>
#include<string.h>
#define DLE 16
#define STX 2
#define ETX 4
class byte_stuffing
{
private:
                char data[35],encoded_data[74],decoded_data[74];
                int len;
                void encode_display(void);
                void decode_display(void);
                void encode_data(void);
public:
                byte_stuffing(void)
                {
                          encoded_data[0]=DLE;
                          encoded_data[1]=STX;
                }
                void accept_data(void);
                void decode_data(void);
};
void byte_stuffing::accept_data(void)
{
                cout<<"Enter the input string(max 35 characters): ";
                gets(data);
                encode_data();
}
void byte_stuffing::encode_data(void)
{
                int k=2;
                for(int i=0;data[i]!='\0';i++)
                {
                                encoded_data[k]=data[i];
                                if(data[i]==DLE)
                                {
                                         k++;
                                       encoded_data[k]= DLE;
                                }
                                k++;
                }
                encoded_data[k]='\0';
                len=strlen(encoded_data);
                encoded_data[len]=DLE;
                encoded_data[len+1]=ETX;
                encoded_data[len+2]='\0';
                encode_display();
}
void byte_stuffing::encode_display(void)
{
               
cout<<"\n*************************************************************************
************\n\nEncoded Data\t: "<<encoded_data;
 
}
void byte_stuffing::decode_data(void)
{
                int i,k=0;
                for(i=0;encoded_data[i]!='\0';i++)
                {
                                if(encoded_data[i]==DLE && encoded_data[i+1]==STX)
                                                break;
                }
                i+=2;
                while(!(encoded_data[i]==DLE && encoded_data[i+1]==ETX))
                {
                                decoded_data[k]=encoded_data[i];
                                if(encoded_data[i]==DLE)
                                {
                                      i++;
                                }
                                k++;
                                i++;
                }
                decoded_data[k]='\0';
                decode_display();
}
void byte_stuffing::decode_display(void)
{
               
cout<<"\n\n***********************************************************************
**************\n\nDecoded Data \t: "<<decoded_data;
}
void main()
{
                byte_stuffing A;
                A.accept_data();
                A.decode_data();
                getch();
}
OUTPUT:
Enter the input string(max 35 characters): Thakur ^P is a ^B prime ^P^D institute
*********************************************************************************
****
Encoded Data   : ►☻Thakur ►► is a ☻ prime ►►♦ institute►♦
*********************************************************************************
****
Decoded Data   : Thakur ► is a ☻ prime ►♦ institute

You might also like