0

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

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

谢谢你。

4

2 回答 2

0

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

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

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

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


经过澄清,您似乎希望将十六进制数字变为十进制数字

如果您有一个包含例如值(十进制)的字节(例如),那么您只需取第一个数字并乘以十,然后添加第二个数字。char0x1117

喜欢

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

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

于 2013-08-26T06:48:25.250 回答
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
于 2013-08-26T06:55:42.973 回答