如何从十六进制转换为int和char?

时间:2013-08-26 06:46:28

标签: c++ io

有没有办法将十六进制转换/转换为十进制并将十六进制转换为char?例如,如果你有:

string hexFile = string(argv[1]);
ifstream ifile;
if(ifile)
  ifile.open(hexFile, ios::binary);
int i = ifile.get();  // I am getting hex form hexFile and want to 
char c = ifile.get(); // convert it to a decimal representation for int and char

谢谢。

2 个答案:

答案 0 :(得分:0)

整数是整数是整数。它仍然以二进制形式存储,它只是您可以更改的演示文稿(即如何显示给用户)。

要将字符显示为十进制数字,只需将其转换为int

char ch = 'a';
std::cout << static_cast<int>(ch) << '\n';

如果您的系统使用ASCII(最有可能的话),上面的代码将显示数字97


在澄清之后,您似乎希望十六进制数字成为十进制数字

如果您的字节(例如char)包含例如值0x11(十进制17),那么您只需要取第一个数字并乘以10,然后加上第二个数字。

char hex = 0x11;
int  dec = ((hex & 0xf0) >> 4) * 10 + (hex & 0x0f);

请注意,这仅适用于a以下的十六进制数字(即0到9)。

答案 1 :(得分:0)

std::string s="1F";
int x;   
std::stringstream ss;
ss << std::hex << s;
ss >> x; 
std::cout<<x<<std::endl; //This is base 10 value
std::cout<<static_cast<char> (x)<<std::endl; //This is ASCII equivalent