Given these 2 mapping tables:
static const char decodingTab[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; static unsigned char encodingTab[64]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
decodingTab is the encondingTab reverse mapping table. So decodingTab [i] should never be -1. In fact, only 64 values โโare expected. However, the size of decodingTab is 128. Thus, in decodingTab, unexpected index values โโare set to -1 (an arbitrary number that is not in [0.63])
char c; unsigned char i; ... encoding[decoding[c]]=c; decoding[encoding[i]=i;
Hope it helps.