将十进制转换为十六进制C ++

时间:2017-03-10 11:53:40

标签: c++ hex decimal itoa

我有这段代码,但它似乎只打印十六进制转换的最后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

HELP?

3 个答案:

答案 0 :(得分:1)

您可以使用hex

std::stringstream ss;
ss<< std::hex << your_input;
std::string res ( ss.str() );
std::cout << res;

答案 1 :(得分:0)

另一种选择是使用%x printf format specifier

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

避免使用itoa功能,这很容易出错。

答案 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();
}

虽然需要在最后一部分组合数组的元素。