-1

我有这段代码,但它似乎只打印了十六进制转换的最后 4 个字符。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main ()
{
int i;
char test [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,test,16);
printf ("hexadecimal: %s\n",test);
getch();
}
  • 输入:3219668508
  • 输出:3e1c
  • 预期输出:bfe83e1c

帮助?

4

2 回答 2

0

我找到了上面代码的替代方法,它有点长但可以正常工作。

#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
unsigned long int decnum, rem, quot;
char hexdecnum[100];
int i=1, j, temp;
cout<<"Enter any decimal number : ";
cin>>decnum;
quot=decnum;
while(quot!=0)
{
    temp=quot%16;
    // to convert integer into character
    if(temp<10)
    {
        temp=temp+48;
    }
    else
    {
        temp=temp+55;
    }
    hexdecnum[i++]=temp;
    quot=quot/16;
}
cout<<"Equivalent hexadecimal value of "<<decnum<<" is : \n";
for(j=i-1; j>0; j--)
{
    cout<<hexdecnum[j];
}
getch();
}

不过,需要在最后一部分组合数组的元素。

于 2017-03-10T12:27:28.710 回答
0

另一种选择是使用%x printf格式说明符

printf("hexadecimal: %x\n", i);

避免itoa函数,它很容易出错。

于 2017-03-10T11:56:10.730 回答