ntg
Dependents: AESslave_modified_test_27-9-2017 AESslave_modified_test_copy AESslave_modified_test_27-9-2017
crc.cpp@0:ffa9fb6be9a1, 2017-09-27 (annotated)
- Committer:
- ajeet3004
- Date:
- Wed Sep 27 10:16:49 2017 +0000
- Revision:
- 0:ffa9fb6be9a1
ntg
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ajeet3004 | 0:ffa9fb6be9a1 | 1 | #include "mbed.h" |
ajeet3004 | 0:ffa9fb6be9a1 | 2 | #include "crc.h" |
ajeet3004 | 0:ffa9fb6be9a1 | 3 | Serial output(USBTX,USBRX); //USB serial to print the data in the console |
ajeet3004 | 0:ffa9fb6be9a1 | 4 | char result1[18]; //To store the character format of the CRC bit |
ajeet3004 | 0:ffa9fb6be9a1 | 5 | int binary1[256]; //To store the binary data in integer type |
ajeet3004 | 0:ffa9fb6be9a1 | 6 | char binary2[256]; //To store the binary data in chracter type |
ajeet3004 | 0:ffa9fb6be9a1 | 7 | int generator[]= {1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0}; //CRC generator |
ajeet3004 | 0:ffa9fb6be9a1 | 8 | int v,v1; |
ajeet3004 | 0:ffa9fb6be9a1 | 9 | |
ajeet3004 | 0:ffa9fb6be9a1 | 10 | |
ajeet3004 | 0:ffa9fb6be9a1 | 11 | //Function for generating CRC and transmitting it |
ajeet3004 | 0:ffa9fb6be9a1 | 12 | char* crcCheck_transmit(char* targetChar) //for transmission the data from gateway to slave device with crc |
ajeet3004 | 0:ffa9fb6be9a1 | 13 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 14 | int i1,j1,k1,l1,h1; |
ajeet3004 | 0:ffa9fb6be9a1 | 15 | |
ajeet3004 | 0:ffa9fb6be9a1 | 16 | |
ajeet3004 | 0:ffa9fb6be9a1 | 17 | |
ajeet3004 | 0:ffa9fb6be9a1 | 18 | v=0,v1=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 19 | for(h1=0; h1<16; h1++) { //loop for binary printing |
ajeet3004 | 0:ffa9fb6be9a1 | 20 | printBinary(targetChar[h1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 21 | output.printf(" - "); |
ajeet3004 | 0:ffa9fb6be9a1 | 22 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 23 | //output.printf("%d",sizeof(f)); |
ajeet3004 | 0:ffa9fb6be9a1 | 24 | // output.printf("\n The data to be analyzed is : "); |
ajeet3004 | 0:ffa9fb6be9a1 | 25 | int frame[v+16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 26 | for(h1=0; h1<v; h1++) { //storing the binary data in frame array |
ajeet3004 | 0:ffa9fb6be9a1 | 27 | // output.printf("%d",binary1[h1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 28 | frame[h1]=binary1[h1]; |
ajeet3004 | 0:ffa9fb6be9a1 | 29 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 30 | //frame[2]=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 31 | /* output.printf("\n The value of v is : %d ",v); //Printing the value of V i.e total binary no. |
ajeet3004 | 0:ffa9fb6be9a1 | 32 | |
ajeet3004 | 0:ffa9fb6be9a1 | 33 | output.printf("\n Sender Side:"); |
ajeet3004 | 0:ffa9fb6be9a1 | 34 | output.printf("\n Frame: ");*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 35 | /* for(i1=0; i1<v; i1++) { // total binary stream printing |
ajeet3004 | 0:ffa9fb6be9a1 | 36 | output.printf("%d",frame[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 37 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 38 | output.printf("\n Generator : "); */ // generator for CRC checking |
ajeet3004 | 0:ffa9fb6be9a1 | 39 | /* for(i1=0; i1<16; i1++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 40 | output.printf("%d",generator[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 41 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 42 | |
ajeet3004 | 0:ffa9fb6be9a1 | 43 | //Append 0's |
ajeet3004 | 0:ffa9fb6be9a1 | 44 | int rs1=16-1; |
ajeet3004 | 0:ffa9fb6be9a1 | 45 | for (i1=v; i1<v+rs1; i1++) { //appending the zeros to the data for calculating the crc |
ajeet3004 | 0:ffa9fb6be9a1 | 46 | frame[i1]=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 47 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 48 | |
ajeet3004 | 0:ffa9fb6be9a1 | 49 | int temp2[v+16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 50 | for(i1=0; i1<v+16; i1++) { // copying the data from one array to another array |
ajeet3004 | 0:ffa9fb6be9a1 | 51 | temp2[i1]=frame[i1]; |
ajeet3004 | 0:ffa9fb6be9a1 | 52 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 53 | |
ajeet3004 | 0:ffa9fb6be9a1 | 54 | /* output.printf("\n Message after appending 0's :"); |
ajeet3004 | 0:ffa9fb6be9a1 | 55 | for(i1=0; i1<v+rs1; i1++) { //printing the data after appending zeros |
ajeet3004 | 0:ffa9fb6be9a1 | 56 | output.printf("%d",temp2[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 57 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 58 | |
ajeet3004 | 0:ffa9fb6be9a1 | 59 | //Division |
ajeet3004 | 0:ffa9fb6be9a1 | 60 | for(i1=0; i1<v; i1++) { //CRC generating through division operation |
ajeet3004 | 0:ffa9fb6be9a1 | 61 | j1=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 62 | k1=i1; |
ajeet3004 | 0:ffa9fb6be9a1 | 63 | //check whether it is divisible or not |
ajeet3004 | 0:ffa9fb6be9a1 | 64 | if (temp2[k1]>=generator[j1]) { |
ajeet3004 | 0:ffa9fb6be9a1 | 65 | for(j1=0,k1=i1; j1<16; j1++,k1++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 66 | if((temp2[k1]==1 && generator[j1]==1) || (temp2[k1]==0 && generator[j1]==0)) { |
ajeet3004 | 0:ffa9fb6be9a1 | 67 | temp2[k1]=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 68 | } else { |
ajeet3004 | 0:ffa9fb6be9a1 | 69 | temp2[k1]=1; |
ajeet3004 | 0:ffa9fb6be9a1 | 70 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 71 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 72 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 73 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 74 | |
ajeet3004 | 0:ffa9fb6be9a1 | 75 | //CRC |
ajeet3004 | 0:ffa9fb6be9a1 | 76 | int crc[16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 77 | for(i1=0,j1=v; i1<rs1; i1++,j1++) { // storing CRC bits in CRC array |
ajeet3004 | 0:ffa9fb6be9a1 | 78 | crc[i1]=temp2[j1]; |
ajeet3004 | 0:ffa9fb6be9a1 | 79 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 80 | |
ajeet3004 | 0:ffa9fb6be9a1 | 81 | /*output.printf("\n CRC bits: "); |
ajeet3004 | 0:ffa9fb6be9a1 | 82 | for(i1=0; i1<rs1; i1++) { //printing CRC bits |
ajeet3004 | 0:ffa9fb6be9a1 | 83 | output.printf("%d",crc[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 84 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 85 | |
ajeet3004 | 0:ffa9fb6be9a1 | 86 | //output.printf("\n Transmitted Frame: "); |
ajeet3004 | 0:ffa9fb6be9a1 | 87 | int tf2[v+16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 88 | char tf3[v+16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 89 | for(i1=0; i1<v; i1++) { // copying the data from one to another |
ajeet3004 | 0:ffa9fb6be9a1 | 90 | tf2[i1]=frame[i1]; |
ajeet3004 | 0:ffa9fb6be9a1 | 91 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 92 | for(i1=v,j1=0; i1<v+rs1; i1++,j1++) { // Adding CRC bits to the data |
ajeet3004 | 0:ffa9fb6be9a1 | 93 | tf2[i1]=crc[j1]; |
ajeet3004 | 0:ffa9fb6be9a1 | 94 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 95 | /* for(i1=0; i1<v+rs1; i1++) { // printing the data after adding the CRC bits to the data |
ajeet3004 | 0:ffa9fb6be9a1 | 96 | output.printf("%d",tf2[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 97 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 98 | |
ajeet3004 | 0:ffa9fb6be9a1 | 99 | tf2[v+rs1]=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 100 | |
ajeet3004 | 0:ffa9fb6be9a1 | 101 | /* output.printf("\n The final data to be sent is : "); // printing the Final data |
ajeet3004 | 0:ffa9fb6be9a1 | 102 | for(i1=0; i1<=v+rs1; i1++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 103 | output.printf("%d",tf2[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 104 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 105 | |
ajeet3004 | 0:ffa9fb6be9a1 | 106 | /* for(i1=0;i1<7;i1++) |
ajeet3004 | 0:ffa9fb6be9a1 | 107 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 108 | tf2[i1]=1; |
ajeet3004 | 0:ffa9fb6be9a1 | 109 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 110 | for(i1=136;i1<144;i1++) |
ajeet3004 | 0:ffa9fb6be9a1 | 111 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 112 | tf2[i1]=1; |
ajeet3004 | 0:ffa9fb6be9a1 | 113 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 114 | output.printf("\n The final data to be sent is : "); // printing the Final data |
ajeet3004 | 0:ffa9fb6be9a1 | 115 | for(i1=0; i1<=v+rs1; i1++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 116 | output.printf("%d",tf2[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 117 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 118 | for(i1=0; i1<=v+rs1; i1++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 119 | charBinary(tf2[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 120 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 121 | /* output.printf("\n The final data to be sent is : "); |
ajeet3004 | 0:ffa9fb6be9a1 | 122 | for(i1=0; i1<=v+rs1; i1++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 123 | output.printf("%c",binary2[i1]); |
ajeet3004 | 0:ffa9fb6be9a1 | 124 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 125 | printChar(binary2); |
ajeet3004 | 0:ffa9fb6be9a1 | 126 | |
ajeet3004 | 0:ffa9fb6be9a1 | 127 | char* str=result1; |
ajeet3004 | 0:ffa9fb6be9a1 | 128 | //result1[18]='!'; |
ajeet3004 | 0:ffa9fb6be9a1 | 129 | output.printf("\n check %s ", str); |
ajeet3004 | 0:ffa9fb6be9a1 | 130 | v=0,v1=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 131 | return result1; |
ajeet3004 | 0:ffa9fb6be9a1 | 132 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 133 | |
ajeet3004 | 0:ffa9fb6be9a1 | 134 | |
ajeet3004 | 0:ffa9fb6be9a1 | 135 | |
ajeet3004 | 0:ffa9fb6be9a1 | 136 | //Function for CRC Checksum |
ajeet3004 | 0:ffa9fb6be9a1 | 137 | int crcCheck_receive(char a1[]) |
ajeet3004 | 0:ffa9fb6be9a1 | 138 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 139 | int i,j,k,l; //Variable required for CRC checksum |
ajeet3004 | 0:ffa9fb6be9a1 | 140 | int rs=15; //Value of should be N - 1 if the generator is of N bits |
ajeet3004 | 0:ffa9fb6be9a1 | 141 | v=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 142 | /*output.printf("\n Receiver side : "); |
ajeet3004 | 0:ffa9fb6be9a1 | 143 | output.printf("\n Received Frame: ");*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 144 | |
ajeet3004 | 0:ffa9fb6be9a1 | 145 | //For loop to convert the given data to binary form |
ajeet3004 | 0:ffa9fb6be9a1 | 146 | for(int m=0; m<18; m++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 147 | printBinary(a1[m]); |
ajeet3004 | 0:ffa9fb6be9a1 | 148 | output.printf("-"); |
ajeet3004 | 0:ffa9fb6be9a1 | 149 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 150 | |
ajeet3004 | 0:ffa9fb6be9a1 | 151 | //For loop to print the binary form of the data |
ajeet3004 | 0:ffa9fb6be9a1 | 152 | /* for(i=0; i<v; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 153 | output.printf("%d",binary1[i]); |
ajeet3004 | 0:ffa9fb6be9a1 | 154 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 155 | v=v-16; |
ajeet3004 | 0:ffa9fb6be9a1 | 156 | int tf[v+16]; //Variable to store the binsry form of the data |
ajeet3004 | 0:ffa9fb6be9a1 | 157 | |
ajeet3004 | 0:ffa9fb6be9a1 | 158 | //For loop to store the bianry form of data into tf |
ajeet3004 | 0:ffa9fb6be9a1 | 159 | for(i=0; i<v+rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 160 | tf[i]=binary1[i]; |
ajeet3004 | 0:ffa9fb6be9a1 | 161 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 162 | |
ajeet3004 | 0:ffa9fb6be9a1 | 163 | /* output.printf("\n"); |
ajeet3004 | 0:ffa9fb6be9a1 | 164 | output.printf("The data to be Analyzed on the receiving side : ");*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 165 | |
ajeet3004 | 0:ffa9fb6be9a1 | 166 | //For loop to print the data to be analyzed |
ajeet3004 | 0:ffa9fb6be9a1 | 167 | /*for(i=0; i<v+rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 168 | output.printf("%d",tf[i]); |
ajeet3004 | 0:ffa9fb6be9a1 | 169 | }*/ |
ajeet3004 | 0:ffa9fb6be9a1 | 170 | |
ajeet3004 | 0:ffa9fb6be9a1 | 171 | int temp[v+16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 172 | int temp2[v+16]; |
ajeet3004 | 0:ffa9fb6be9a1 | 173 | for(i=0; i<v+rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 174 | temp[i]=tf[i]; |
ajeet3004 | 0:ffa9fb6be9a1 | 175 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 176 | output.printf("\n The value before operation is :"); |
ajeet3004 | 0:ffa9fb6be9a1 | 177 | for(i=0; i<v+rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 178 | output.printf("%d",temp[i]); |
ajeet3004 | 0:ffa9fb6be9a1 | 179 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 180 | //Division |
ajeet3004 | 0:ffa9fb6be9a1 | 181 | for(i=0; i<v; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 182 | j=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 183 | k=i; |
ajeet3004 | 0:ffa9fb6be9a1 | 184 | if (temp[k]>=generator[j]) { |
ajeet3004 | 0:ffa9fb6be9a1 | 185 | for(j=0,k=i; j<16; j++,k++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 186 | if(temp[k] == generator[j]) { //If the data bit and generator bit are same |
ajeet3004 | 0:ffa9fb6be9a1 | 187 | temp[k]=0; //Result is 0 |
ajeet3004 | 0:ffa9fb6be9a1 | 188 | } else { //If the data bit and generator bit are not same |
ajeet3004 | 0:ffa9fb6be9a1 | 189 | temp[k]=1; //Result is 1 |
ajeet3004 | 0:ffa9fb6be9a1 | 190 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 191 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 192 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 193 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 194 | output.printf("\n The value after operation is :"); |
ajeet3004 | 0:ffa9fb6be9a1 | 195 | for(i=0; i<v+rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 196 | output.printf("%d",temp[i]); |
ajeet3004 | 0:ffa9fb6be9a1 | 197 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 198 | output.printf("\n Reaminder: "); |
ajeet3004 | 0:ffa9fb6be9a1 | 199 | int rrem[16]; //Char array to store the remainder of the CRC checksum |
ajeet3004 | 0:ffa9fb6be9a1 | 200 | |
ajeet3004 | 0:ffa9fb6be9a1 | 201 | //For loop to store the remainder |
ajeet3004 | 0:ffa9fb6be9a1 | 202 | for (i=v,j=0; i<v+rs; i++,j++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 203 | rrem[j]= temp[i]; |
ajeet3004 | 0:ffa9fb6be9a1 | 204 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 205 | |
ajeet3004 | 0:ffa9fb6be9a1 | 206 | //For loop to print the remainder |
ajeet3004 | 0:ffa9fb6be9a1 | 207 | for(i=0; i<rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 208 | output.printf("%d",rrem[i]); |
ajeet3004 | 0:ffa9fb6be9a1 | 209 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 210 | |
ajeet3004 | 0:ffa9fb6be9a1 | 211 | int flag=0; //Variable to store the status of the flag |
ajeet3004 | 0:ffa9fb6be9a1 | 212 | |
ajeet3004 | 0:ffa9fb6be9a1 | 213 | //For loop to check the remainder |
ajeet3004 | 0:ffa9fb6be9a1 | 214 | for(i=0; i<rs; i++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 215 | if(rrem[i]!=0) { //If remainder bit is not equal to 0 |
ajeet3004 | 0:ffa9fb6be9a1 | 216 | flag=1; //Set the flag value as 1 |
ajeet3004 | 0:ffa9fb6be9a1 | 217 | break; |
ajeet3004 | 0:ffa9fb6be9a1 | 218 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 219 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 220 | |
ajeet3004 | 0:ffa9fb6be9a1 | 221 | if(flag==0) { //if flag value is 0 |
ajeet3004 | 0:ffa9fb6be9a1 | 222 | //output.printf("\n Since Remainder Is 0 Hence Message Transmitted From Sender To Receriver Is Correct"); |
ajeet3004 | 0:ffa9fb6be9a1 | 223 | return 0; //Return 0 |
ajeet3004 | 0:ffa9fb6be9a1 | 224 | |
ajeet3004 | 0:ffa9fb6be9a1 | 225 | |
ajeet3004 | 0:ffa9fb6be9a1 | 226 | } else { //if flag value is not zero |
ajeet3004 | 0:ffa9fb6be9a1 | 227 | // output.printf(" \n Since Remainder Is Not 0 Hence Message Transmitted From Sender To Receriver Contains Error"); |
ajeet3004 | 0:ffa9fb6be9a1 | 228 | return 1; //return 1 |
ajeet3004 | 0:ffa9fb6be9a1 | 229 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 230 | v=0; |
ajeet3004 | 0:ffa9fb6be9a1 | 231 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 232 | |
ajeet3004 | 0:ffa9fb6be9a1 | 233 | //Function to print the binary format of the data which takes char c as a parameter |
ajeet3004 | 0:ffa9fb6be9a1 | 234 | void printBinary(char c) |
ajeet3004 | 0:ffa9fb6be9a1 | 235 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 236 | |
ajeet3004 | 0:ffa9fb6be9a1 | 237 | for (int i = 7; i >= 0; --i) { |
ajeet3004 | 0:ffa9fb6be9a1 | 238 | int x = ((c & (1 << i))? 1 : 0); |
ajeet3004 | 0:ffa9fb6be9a1 | 239 | output.printf("%d",x); |
ajeet3004 | 0:ffa9fb6be9a1 | 240 | binary1[v]=x; |
ajeet3004 | 0:ffa9fb6be9a1 | 241 | v++; |
ajeet3004 | 0:ffa9fb6be9a1 | 242 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 243 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 244 | |
ajeet3004 | 0:ffa9fb6be9a1 | 245 | //Function to convertthe data from integer form to binary form which takes int c1 as parameter |
ajeet3004 | 0:ffa9fb6be9a1 | 246 | void charBinary(int c1) |
ajeet3004 | 0:ffa9fb6be9a1 | 247 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 248 | char x1 = ((c1 & 1)? '1' : '0'); |
ajeet3004 | 0:ffa9fb6be9a1 | 249 | // output.printf("%c",x1); |
ajeet3004 | 0:ffa9fb6be9a1 | 250 | binary2[v1]=x1; |
ajeet3004 | 0:ffa9fb6be9a1 | 251 | v1++; |
ajeet3004 | 0:ffa9fb6be9a1 | 252 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 253 | |
ajeet3004 | 0:ffa9fb6be9a1 | 254 | |
ajeet3004 | 0:ffa9fb6be9a1 | 255 | /* ####### printChar function to convert the binary value into the respective character ########## */ |
ajeet3004 | 0:ffa9fb6be9a1 | 256 | |
ajeet3004 | 0:ffa9fb6be9a1 | 257 | void printChar(char x2[]) |
ajeet3004 | 0:ffa9fb6be9a1 | 258 | { |
ajeet3004 | 0:ffa9fb6be9a1 | 259 | |
ajeet3004 | 0:ffa9fb6be9a1 | 260 | //memcpy(a, b, sizeof(a)); |
ajeet3004 | 0:ffa9fb6be9a1 | 261 | char *ON = x2 ; |
ajeet3004 | 0:ffa9fb6be9a1 | 262 | output.printf("\n"); |
ajeet3004 | 0:ffa9fb6be9a1 | 263 | output.printf("%c",x2); |
ajeet3004 | 0:ffa9fb6be9a1 | 264 | char subbuff[9]; |
ajeet3004 | 0:ffa9fb6be9a1 | 265 | for(int j=0; j<sizeof(result1); j++) { |
ajeet3004 | 0:ffa9fb6be9a1 | 266 | result1[j]='\0'; |
ajeet3004 | 0:ffa9fb6be9a1 | 267 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 268 | unsigned char c3; |
ajeet3004 | 0:ffa9fb6be9a1 | 269 | int k1; |
ajeet3004 | 0:ffa9fb6be9a1 | 270 | int index = 0; |
ajeet3004 | 0:ffa9fb6be9a1 | 271 | int fichero_len = (int)strlen(ON); |
ajeet3004 | 0:ffa9fb6be9a1 | 272 | |
ajeet3004 | 0:ffa9fb6be9a1 | 273 | for(k1 = 0; k1 < fichero_len; k1 += 8) { |
ajeet3004 | 0:ffa9fb6be9a1 | 274 | memcpy(subbuff, &ON[k1], 8); // <--- copy 8 butes only |
ajeet3004 | 0:ffa9fb6be9a1 | 275 | subbuff[8] = '\0'; |
ajeet3004 | 0:ffa9fb6be9a1 | 276 | c3 = (unsigned char)strtol(subbuff, 0, 2); |
ajeet3004 | 0:ffa9fb6be9a1 | 277 | //printf("\%s = %c = %d = 0x%.2X\n", subbuff, c3, c3, c3); |
ajeet3004 | 0:ffa9fb6be9a1 | 278 | result1[index++] = c3; |
ajeet3004 | 0:ffa9fb6be9a1 | 279 | result1[index] = '\0'; |
ajeet3004 | 0:ffa9fb6be9a1 | 280 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 281 | printf("\nResult = %s\n", result1); |
ajeet3004 | 0:ffa9fb6be9a1 | 282 | |
ajeet3004 | 0:ffa9fb6be9a1 | 283 | } |
ajeet3004 | 0:ffa9fb6be9a1 | 284 |