LoginSignup
1
1

More than 5 years have passed since last update.

C > link > 文字列を定義してインデックスアクセス > *dstPtr++ = "0123456789ABCDEF"[nibble];

Last updated at Posted at 2016-10-04

@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];という書き方とは別に起因する問題のような気がしてきました。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1