我需要将十六进制文字字符转换为其值。请考虑以下事项:
char hex1 = 'f'; // hex equals 102, as ´f´ is ASCII 102.
char hexvalue = converter(hex1); // I need on hexvalue 0x0F, or 1111 binary
这里最直接的converter
功能是什么?
感谢您的帮助。
答案 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.
}
但是,当你可以使用现有的函数从文本表示转换为内部表示时,为什么要写自己的呢?
另请参阅strtol
,strtoul
,std::istringstream
,sscanf
。
编辑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;
}