From 0eceb10024d66033c7a567387a80e664c5ebb4e6 Mon Sep 17 00:00:00 2001 From: Joe DF Date: Thu, 12 Jul 2018 10:09:50 -0400 Subject: [PATCH] Usage examples and info --- BuildRun.bat | 13 ++++++++++++- README.md | 3 +++ b64f.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ picture.png | Bin 0 -> 27379 bytes 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 b64f.c create mode 100644 picture.png diff --git a/BuildRun.bat b/BuildRun.bat index 874ac75..121bd4b 100644 --- a/BuildRun.bat +++ b/BuildRun.bat @@ -3,5 +3,16 @@ mkdir bin 2>NUL cls echo compiling... gcc test.c base64.c -o bin\test.exe +gcc b64f.c base64.c -o bin\b64f.exe echo running... -bin\test.exe \ No newline at end of file +bin\test.exe +echo. +echo Encoding test image "picture.png" to "picture.b64.txt"... +bin\b64f.exe e picture.png picture.b64.txt +echo. +echo Decoding test image from "picture.b64.txt" to "picture.b64.png"... +bin\b64f.exe d picture.b64.txt picture.b64.png +echo. +echo Done. +echo See files manually if the programmed works correctly. +pause \ No newline at end of file diff --git a/README.md b/README.md index 57154cc..58fba4b 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,6 @@ Released under the MIT License Thank you for inspiration: http://www.codeproject.com/Tips/813146/Fast-base-functions-for-encode-decode + +## Usage +Simply include `base64.c` and `base64.h` in your project and see `base64.h` for instructions. \ No newline at end of file diff --git a/b64f.c b/b64f.c new file mode 100644 index 0000000..895dc9e --- /dev/null +++ b/b64f.c @@ -0,0 +1,44 @@ +#include +#include +#include + +#include "base64.h" + +int lower(int a); + +int main(int argc,char** argv) { + + puts("\nbase64.c [Encode/Decode]"); + puts("------------------------------------"); + printf("Use the following to encode:\n\t%s e(ncode) IN_filepath OUT_filepath\n",argv[0]); + printf("Use the following to decode:\n\t%s d(ecode) IN_filepath OUT_filepath\n",argv[0]); + if (argc < 4) { + puts("\nERROR: not enough parameters..."); + return 1; + } + char opt = lower(argv[1][0]); + int bcoded = 0; + switch(opt) { + case 'd': + puts("\nDECODING"); + bcoded = b64_decodef(argv[2],argv[3]); + break; + case 'e': + puts("\nENCODING"); + bcoded = b64_encodef(argv[2],argv[3]); + break; + default: + puts("\nINVALID OPTION"); + bcoded = -1; + } + + printf("\nBytes encoded/decoded: %i\n",bcoded); + + return 0; +} + +int lower(int a) { //https://stackoverflow.com/a/15709023/883015 + if ((a >= 0x41) && (a <= 0x5A)) + a |= 0x20; + return a; +} diff --git a/picture.png b/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7f5c9f756235d4b179f6f224c22d1c51dc66e0 GIT binary patch literal 27379 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

x{ec=e#3z7| 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