【发布时间】:2015-11-25 20:11:34
【问题描述】:
我正在寻找获取十六进制 ASCII 字符十进制值的最快方法,即保证出现在以下字符串中(可以是小写或大写,但不能有空格):
0123456789ABCDEFabcdef
到目前为止,我想出的最佳公式是:
char c = 'd'; // or any other hex character
int value = (((c & 0x1F) + 9) % 25;
请注意,它是无分支的,但它确实包含昂贵的模运算。
我可以做得更好吗?
【问题讨论】:
-
所以你想要 d(hex)->13(int)?
-
如果你想要速度,一个简单的查找表怎么样?它不聪明,但很有用。
-
@MarkusA。我同意它可能不会更快,但是差异在很大程度上取决于您当时的缓存使用情况。这里更重要的是“你测量了吗?”和“接下来谁会阅读你的代码?”
-
可能更适合代码审查网站。
-
我认为这在代码审查中不会很好,直到包含更实质性的代码片段作为上下文......此外,没有指定语言。我认为这在 Stack Overflow 上确实更好。