[英]C how to convert to hexadecimal integer
我正在編寫一個將數字轉換為十六進制的代碼,並得到一個隨機數作為結果。 起初我成功轉換了數字,但它的順序相反(第一個 mod 需要是最后一個數字或字母)。 該代碼是一個大型項目的一部分(對於%x
的情況),該項目是sprintf
的一種實現(因此顯然不允許使用sprintf
或printf
)。 所以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.