簡體   English   中英

C如何轉換為十六進制 integer

[英]C how to convert to hexadecimal integer

我正在編寫一個將數字轉換為十六進制的代碼,並得到一個隨機數作為結果。 起初我成功轉換了數字,但它的順序相反(第一個 mod 需要是最后一個數字或字母)。 該代碼是一個大型項目的一部分(對於%x的情況),該項目是sprintf的一種實現(因此顯然不允許使用sprintfprintf )。 所以buffer用於組成一個沒有任何占位符的字符串。 提前謝謝你。

這是我的代碼:

int num = *(int*)ptrs[counter];
int tempnum=num;
int mod=0;
int length =0;
for(int i=0;tempnum !=0;i++)
{
    length++;
    tempnum /= 16;
}
int array[length];
for(int i= length; i>0;i--)
{
    mod = num%16;
    num = num/16;
    array[i] = mod;
}
for(int i=0;i<length;i++)
{
    if(array[i]<10)
        *buffer = array[i]+ '0';
    else
        *buffer = array[i] -10 + 'a';
    buffer++;
}

計算array[i]的 for 循環應更改為:

    for(int i = length-1; i>=0;i--) // i from (length - 1) to 0 instead of from length to 1.
    {
        mod = num%16;
        num = num/16;
        array[i] = mod;
    }

您不需要更改緩沖區指針。 您可以使用:

    for(int i=0;i<length;i++)
    {
        if(array[i]<10)
            buffer[i] = array[i]+ '0';
        else
            buffer[i] = array[i] + 55;
    }

然后不要忘記緩沖區末尾的 null 字符:

buffer[length] = '\0';

我在您的代碼中沒有看到buffer的聲明,所以我提出了上述聲明的解決方案:

 char buffer[length+1];
for(int i= length; i>0;i--)
                {
                    mod = num%16;
                    num = num/16;
                    array[i] = mod;
                }

array[i] 到 array[i-1] 的錯誤。

buffer = array[i] + '87';

我建議你使用:

buffer = array[i]-10 + 'a';
printf("%i", (int)[any hexadecimal number]);

將打印此“[任何十六進制數]”數字的 integer 形式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM