c++ - 在 C++ 中将十六进制字符转换为 int

标签 c++ char int hex

如何将十六进制字符而不是字符串更改为数值?

在输入这个问题时,我找到了很多关于如何将十六进制字符串转换为值的答案。但是,没有一个适用于字符。我记得在某处读到这适用于字符串:

std::string mystr = "12345";
unsigned int myval;
std::stringstream(mystr) >> std::hex >> myval;

但是,如果我在循环中执行 mystr[x],则此代码将不起作用。我尝试使用 std::string temp = mystr[x] 添加新行并将 std::stringstream(mystr) 更改为 std::stringstream( temp),但这也不起作用。

那么我应该怎么做呢?目前,我正在搜索一串十六进制字符 ("0123456789abcdef".find(mystr[x]);) 并使用索引作为值。但是,由于它会搜索,所以速度很慢,即使它只搜索 16 个字符也是如此。

http://ideone.com/dIyD4

最佳答案

int intval = (hexchar >= 'A') ? (hexchar - 'A' + 10) : (hexchar - '0');

关于c++ - 在 C++ 中将十六进制字符转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457551/

相关文章:

Javaform : how to use a char in this case

iphone - 将 char 转换为 int 的奇怪错误( Objective-C )

c - C中打印指针地址【二问】

javascript - 为什么 JavaScript 对 plus 和 string 和 int 的计算方式不同?

c++ - 查找数组总数

string - Haskell 函数

c++ - 0 是十进制文字还是八进制文字?

c++ - 非类类型成员打印错误请求 'char'

c++ - 具有高效第 n 个元素访问的 std::map

用于更快创建新对象的 C++ block 分配器