如何从十六进制转换为int和char
How to cast from hex to int and char?
有没有一种方法可以将十六进制转换/强制转换为十进制,并将十六进制形式转换为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)。
相关文章:
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 声明具有两种类型的变量:"int char"
- 定义.cpp中常数int/char*
- Qt5 对'QApplication::QApplication(int&, char**, int)'的未定义引用
- 将int/char插入数据库
- 从 std::vector 转换为<int> char[] C++
- 为什么INT(char)的比较不起作用
- 使用int+char组合uint8_t
- 为什么这个返回值?C++int/char混淆
- 向量到 int<char> 与向量<wchar_t>到 int
- Evaluate an int, char and int
- 接收错误"no matching function for call to 'getline(std::ifstream&, int&, char)'"
- reinterpret_cast<int*>(char*) vs. static_cast<int*>(static_cast<void*>(char*)) --
- 将类型int(C::*)(int, char)转换为类型int(int, char)
- 如何添加多位数的int和char,其中输出为int+char
- 是int, char也是抽象数据类型