0

在自己玩弄了 URL 解码之后,我设法想出了一些可行的想法——但它们效率不高。由于 URL 解码是我的程序中可能出现严重瓶颈的地方,我决定上网寻找更有效的解决方案。我遇到了这篇 codeguru 文章:

http://www.codeguru.com/cpp/cpp/string/conversions/article.php/c12759

现在,我不反对使用别人的代码,尤其是如果它比我的更好的话。但是,我想在我做之前知道它是如何工作的。使用您不完全理解的代码毫无意义。

这是我卡住的地方,我了解解码功能中正在进行的大部分指针工作。我迷路的地方是 HEX2DEC 数组和相关的转换算法。它没有在网站上提供,而是在示例下载中提供,因此为了您的方便,我将其与解码功能一起发布在这里:

http://pastebin.com/AVDnr6cK

这个函数究竟是如何使用这个数组将十六进制转换为十进制,然后将十进制转换为它的 ASCII 等价物?

再次感谢你的帮助。

4

1 回答 1

2

该数组是一个查找表,对于用作索引的每个 ascii 字符,如果该字符不是十六进制字符(in或) [0..9],它将提供 -1或转换为该十六进制字符的整数。[A..F][a..f]

在主循环中,每当%找到 a 时,首先使用该数组来确定以下两个字符是否为十六进制 ( != -1),如果是,则转换整个序列。该操作(dec1 << 4) + dec2等价于dec1 * 16 + dec2, 表示将两个十六进制字符转换为 8 位整数。

于 2011-05-22T10:31:18.157 回答