-
Notifications
You must be signed in to change notification settings - Fork 0
/
decode-encode.c
86 lines (77 loc) · 1.67 KB
/
decode-encode.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MESSAGE_SIZE 513
char* encode(char *status_code,char key[256],char val[256])
{
char *en_message=(char*)malloc(MESSAGE_SIZE * sizeof(char) + 1);
//int size = 8; //size of string
char *pad = "#"; //one ASCII zero
strcpy(en_message, status_code);
strcat(en_message,key);
for(int i=strlen(key)+1;i<=256;i++)
{
en_message[i]='\0';
}
if(val!=NULL)
{
for(int i=0;i<strlen(val);i++)
{
en_message[i+257]=val[i];
//printf("%c\n",en_message[i+257]);
}
for(int i=257+strlen(val);i<513;i++)
{
en_message[i]='\0';
}
}
else
{
for(int i=strlen(en_message);i<=513;i++)
{
en_message[i]='\0';
}
}
/*
while (strlen(en_message) < 257)
{
strcat(en_message, pad);
}
if (val!=NULL)
{
strcat(en_message,val);
}
while (strlen(en_message) < MESSAGE_SIZE)
{
strcat(en_message, pad);
}*/
return en_message;
}
typedef struct decoded_message
{
char key[256];
char value[256];
int status_code;
}decoded_message;
void decode(char message[513],decoded_message *dec_mess)
{
dec_mess->status_code=(message[0]+256)%256;
dec_mess->key[0]='\0';
dec_mess->value[0]='\0';
for(int i=1;i<=256;i++)
{
if(message[i]=='\0')
{
break;
}
strncat(dec_mess->key,(message+i),1);
}
for(int i=257;i<513;i++)
{
if(message[i]=='\0')
{
break;
}
strncat(dec_mess->value,(message+i),1);
}
}