#include "Base64.h"
byte myFile[] = "The quick brown fox jumps over the lazy dog!";
void setup() {
Serial.begin(115200);
while (!Serial) yield();
size_t inputLength = strlen(myFile); // when using a file, get file size
size_t encodedLength = base64_enc_len(inputLength); // calculate the full buffer we need
char encoded[encodedLength];
size_t inputPos = 0;
size_t outputPos = 0;
size_t chunkSize = 6; // needs to be a multiple of 3 bytes
byte chunk[chunkSize];
size_t encodedChunkSize = base64_enc_len(chunkSize);
char encodedChunk[encodedChunkSize];
while (inputPos < inputLength) {
if (inputPos + chunkSize < inputLength ) {
memcpy(chunk, myFile + inputPos, chunkSize); // read chunkSize into our buffer
base64_encode(encodedChunk, chunk, chunkSize); // encode that buffer
memcpy(encoded + outputPos, encodedChunk, encodedChunkSize); // concat the output for that chunk
outputPos += encodedChunkSize;
inputPos += chunkSize;
} else {
size_t remainingSize = inputLength - inputPos;
size_t encodedRemainingSize = base64_enc_len(remainingSize);
memcpy(chunk, myFile + inputPos, remainingSize); // read the rest of the file into our buffer
base64_encode(encodedChunk, chunk, remainingSize); // encode that buffer
memcpy(encoded + outputPos, encodedChunk, encodedRemainingSize); // concat the output for that chunk
break;
}
}
// dump the base64 output in HEX
Serial.println("ENCODED");
for (size_t i = 0; i < encodedLength; i++) {
Serial.write(encoded[i]); // it's supposed to be ascii
}
Serial.println();
}
void loop() {}