相关疑难解决方法(0)

C和C++是否保证[af]和[AF]字符的ASCII?

我正在查看以下代码来测试十六进制数字并将其转换为整数.代码有点聪明,因为它利用大写字母和低位字母之间的差异是32,而那是第5位.所以代码执行一个额外的OR,但保存一个JMP和两个CMPs.

static const int BIT_FIVE = (1 << 5);
static const char str[] = "0123456789ABCDEFabcdef";

for (unsigned int i = 0; i < COUNTOF(str); i++)
{
    int digit, ch = str[i];

    if (ch >= '0' && ch <= '9')
        digit = ch - '0';
    else if ((ch |= BIT_FIVE) >= 'a' && ch <= 'f')
        digit = ch - 'a' + 10;
    ...
}
Run Code Online (Sandbox Code Playgroud)

C和C++是否保证[af]和[AF]字符的ASCII或值?这里,保证意味着上下字符集总是相差一个常数值,可以用一个位表示(对于上面的技巧).如果没有,标准对他们说了什么?

(对不起C和C++标签.我对两种语言在这个问题上的立场感兴趣).

c c++ ascii

24
推荐指数
3
解决办法
2890
查看次数

标签 统计

ascii ×1

c ×1

c++ ×1