Byte Stuffing
Byte Stuffing
Byte Stuffing
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