C言語はint型データを16進数の文字列に変換する


方法1:
int i =0;
char * inttohex(int aa,char *buffer)
{
    if (aa < 16)            // 
    {
        if (aa < 10)        // 
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'a';
        buffer[i+1] = '\0'; // 
    }
    else
    {
        inttohex(aa / 16,buffer);  // 
        i++;                // +1
        aa %= 16;           // 
        if (aa < 10)        // 
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'a';
    }


    return (buffer);
}

グローバル変数iを使用して下付きスケールを記録するため、関数変換を呼び出すたびにiを0に設定する必要がある.
方法2、静的変数を使用する:
char * inttohex(int aa,char *buffer)
{
    static int  i = 0;
    i = 0;
    if (aa < 16)            // 
    {
        if (aa < 10)        // 
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'a';
        buffer[i+1] = '\0'; // 
    }
    else
    {
        inttohex(aa / 16,buffer);  // 
        i++;                // +1
        aa %= 16;           // 
        if (aa < 10)        // 
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'a';
    }


    return (buffer);
}


テストコードは次のとおりです.
char * inttohex(int aa,char *buffer)
{
    static int  i = 0;
    i = 0;
    if (aa < 16)            // 
    {
        if (aa < 10)        // 
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'a';
        buffer[i+1] = '\0'; // 
    }
    else
    {
        inttohex(aa / 16,buffer);  // 
        i++;                // +1
        aa %= 16;           // 
        if (aa < 10)        // 
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'a';
    }


    return (buffer);
}



int my_strLength(char *str)
{
    int len = 0;
    while (*str != '\0') {
        len++;
        str++;
    }
    return len;
}


char * getCRC2(char *string,char *buffer)
{
    int len = my_strLength(string);
    int sum = 0;
    for (int i=0; i:%s \r
",rs1); char *str2="bbbfffa"; char *rs2 = getCRC2(str2,buffer2); printf("rs2===>:%s \r
",rs2); char *str3 = "cccccccaaa"; char *rs3 = getCRC2(str3,buffer3); printf("rs3===>:%s \r
",rs3); return 0; }