Again an interesting post;
Think the compiler optimizes the 'A' - 10; to '7'
but there is still an optimization to be found in
char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars.
The array-size could be base dependant, NB this size is only needed when base = 2
base = 2 => 32 + 1 char.
base = 10 => 10 + 1 char.