Question: Programming in C Base 64 Decode File Write a program that accepts one command line argument, which is the name of a base-64 encoded text
Programming in C Base 64 Decode File
Write a program that accepts one command line argument, which is the name of a base-64 encoded text file.
The program is to base-64 decode the file, which is to be treated as a text file, outputting the result into a second file (to be treated as a binary file) using as the name the string of text read from the first line of the input file.
Your program should print to the console the total number of bytes written to the output file
base-64.c
#include
char map(unsigned value) { if (value < 26) return 'A' + value; if (value < 52) return 'a' + value - 26; if (value < 62) return '0' + value - 52; if (62 == value) return '+'; if (63 == value) return '/'; return '?'; }
unsigned unmap(char c) { if ('/' == c) return 63; if ('+' == c) return 62; if (isdigit(c)) return 52 + (c - '0'); if (islower(c)) return 26 + (c - 'a'); if (isupper(c)) return 0 + (c - 'A'); return 0xFFFFFFFF; }
int main(void) { char *message = "Hello World!"; unsigned data = 062434752; // 0xCA35EA; char chars[4]; printf("DATA: %o ", data); int i; for (i = 0; i < 4; i++) { unsigned value = (data >> (18 - 6 * i)) & 077; chars[i] = map(value); } printf("MSG : "); int i4; for (i4 = 0; i4 < 4; i4++) { printf("%c", chars[i4]); } printf(" "); data = 0; int i2; for (i2 = 0; i2 < 4; i2++) { unsigned value = unmap(chars[i2]); data <<= 6; data += value; } printf("DATA: %o ", data);
return EXIT_SUCCESS; }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
