[GO] C> link> Definiere einen String und greife auf den Index zu> * dstPtr ++ = "0123456789ABCDEF" [nibble];

[Kommentar] von @SaitoAtsushi (http://qiita.com/7of9/items/92f5a0850370d3f3e558#comment-4cd1207dc70f48f1020d).

*dstPtr++ = "0123456789ABCDEF"[nibble];

Es wird ein verlinkter Artikel für die zukünftige Suche sein.

Kann es auf etwas anderes als die Sequenz von 0 nach F umgeleitet werden?

Zugehöriger Code

Ein Beispiel für den oben genannten Verwendungsfehler wurde in stackoverflow veröffentlicht.

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;
}

Ergebnis


101
65
41
101 = 01 = 01n

~~ Es scheint, dass du hier vorsichtig sein musst. ~~

Ich bin der Meinung, dass das obige Problem durch etwas anderes als das Schreiben "0123456789ABCDEF" [nibble]; "verursacht wird.

http://ideone.com/0yHNQ0

Recommended Posts

C> link> Definiere einen String und greife auf den Index zu> * dstPtr ++ = "0123456789ABCDEF" [nibble];
Was ist der Unterschied zwischen symbolischen und harten Links?
RDKit definiert das Reaktionsmuster mit SMARTS und erzeugt einen Reaktanten