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
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started