@SaitoAtsushi さんにいただいたコメント。
*dstPtr++ = "0123456789ABCDEF"[nibble];
将来の検索用にリンク記事とします。
0からFの並び以外にも何かに流用できないだろうか。
関連コード
stackoverflowで上記の使い方の失敗例が掲示されていました。
#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;
}
結果
101
65
41
101 = 01 = 01n
このあたりは注意が必要そうです。
上記の問題は"0123456789ABCDEF"[nibble];
という書き方とは別に起因する問題のような気がしてきました。