有没有办法将十六进制转换/转换为十进制并将十六进制转换为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
谢谢。
答案 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