将HEX单个文字字符转换为其值

时间:2016-02-17 21:16:59

标签: c++ string hex

我需要将十六进制文字字符转换为其值。请考虑以下事项:

char hex1 = 'f'; // hex equals 102, as ´f´ is ASCII 102.

char hexvalue = converter(hex1); // I need on hexvalue 0x0F, or 1111 binary 

这里最直接的converter功能是什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

直接转换器功能是使用查找数组:

unsigned int Convert_Char_Digit_To_Hex(char digit)
{
    static const std::string char_to_hex[] = "0123456789ABCDEF";
    const std::string::size_type posn = 
        char_to_hex.find(digit);
    if (posn != std::string::npos)
    {
        return posn;
    }
    return 0; // Error if here.
}

但是,当你可以使用现有的函数从文本表示转换为内部表示时,为什么要写自己的呢? 另请参阅strtolstrtoulstd::istringstreamsscanf

编辑1:比较
另一种选择是使用比较和数学:

unsigned int Hex_Char_Digit_To_Int(char digit)
{
  unsigned int value = 0U;
  digit = toupper(digit);
  if ((digit >= '0') and (digit <= '9'))
  {
    value = digit - '0';
  }
  else
  {
    if ((digit >= 'A') and (digit <= 'F'))
    {
      value = digit - 'A' + 10;
    }
  }
  return value;
}