在自己尝试 URL 解码之后,我设法想出了一些可行的想法 - 但它们不是很有效。由于 URL 解码是我的程序中可能出现严重瓶颈的地方,我决定上网寻找更有效的解决方案。我遇到了这篇 codeguru 文章:
http://www.codeguru.com/cpp/cpp/string/conversions/article.php/c12759
现在,我不反对使用别人的代码,尤其是如果它比我的好。但是,我想在我做之前知道它是如何工作的。使用您不完全理解的代码毫无意义。
这是我卡住的地方,我理解解码函数中正在进行的大部分指针工作。我迷路的地方是 HEX2DEC 数组和相关的转换算法。它没有在网站上提供,而是在示例下载中提供,因此为了方便您,我将其与解码功能一起发布在这里:
这个函数究竟是如何使用这个数组将十六进制转换为十进制,然后将十进制转换为等效的 ASCII?
再次感谢您的帮助。
最佳答案
数组是一个查找表,对于用作索引的每个 ascii 字符,如果字符不是十六进制字符(在 [0..9]
、 [A..F]
或 [a..f]
中),它将提供 -1 或转换为该十六进制字符的整数。
在主循环中,每当一个%
发现该数组首先用于确定以下两个字符是否为十六进制( != -1
),如果是则转换整个序列。操作(dec1 << 4) + dec2
相当于dec1 * 16 + dec2
, 表示两个十六进制字符到8位整数的转换。
关于c++ - 帮助我理解这个 URL 解码器 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6087293/