Это не ответ, а наблюдение - используя его, поскольку он форматирует код
static char lookup[] = { '0', '1', '2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
int j = 0;
for (i=0; i<ArraySize; ++i)
{
loc[j++] = lookup[(Tmp[i] & 0xf0) >> 4];
loc[j++] = lookup[Tmp[i] & 0xf];
}
loc[j] = 0;
делает код намного быстрее и проще.