C言語はint型データを16進数の文字列に変換する
2605 ワード
方法1:
グローバル変数iを使用して下付きスケールを記録するため、関数変換を呼び出すたびにiを0に設定する必要がある.
方法2、静的変数を使用する:
テストコードは次のとおりです.
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;
}