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

How to cast from hex to int and char?

本文关键字:int char 转换 十六进制      更新时间:2023-10-16

有没有一种方法可以将十六进制转换/强制转换为十进制,并将十六进制形式转换为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

谢谢。

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

一个整数就是一个整数。它仍然存储在二进制文件中,您可以更改的只是演示(即如何向用户显示)。

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

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

如果您的系统使用ASCII(很可能是这样),上面的代码将显示数字97


经过澄清,您似乎希望十六进制的数字变成十进制的数字。

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

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

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