[Commentaire] de @SaitoAtsushi (http://qiita.com/7of9/items/92f5a0850370d3f3e558#comment-4cd1207dc70f48f1020d).
*dstPtr++ = "0123456789ABCDEF"[nibble];
Ce sera un article lié pour une recherche future.
Peut-il être détourné vers autre chose que la séquence de 0 à F?
Un exemple de l'échec d'utilisation ci-dessus a été publié dans stackoverflow.
http://ideone.com/LoFO3r
#include<stdio.h>
char *convert(unsigned int num, int base)
{
static char buff[33];
char *ptr;
ptr=&buff[sizeof(buff)-1];
*ptr='\0';
do
{
*--ptr="0123456789abcdef"[num%base];
num/=base;
} while(num!=0);
return(ptr);
}
int main(){
puts(convert(65,8));
puts(convert(65,10));
puts(convert(65,16));
printf("%s = %s = %sn", convert(65,8), convert(65,10), convert(65,16));
return 0;
}
résultat
101
65
41
101 = 01 = 01n
~~ Il semble que vous deviez faire attention ici. ~~
Je pense que le problème ci-dessus est causé par autre chose que l'écriture «" 0123456789ABCDEF "[nibble];`.
http://ideone.com/0yHNQ0