我正在寻找获得十六进制ASCII字符的十进制值的最快方法,即保证出现在以下字符串中的一个(它可以是小写或大写,但没有空格):
0123456789ABCDEFabcdef
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出的最好的公式是:
char c = 'd'; // or any other hex character
int value = (((c & 0x1F) + 9) % 25;
Run Code Online (Sandbox Code Playgroud)
请注意,它是无分支的,但它确实包含昂贵的模运算.
我可以做得更好吗?