c++ - 帮助我理解这个 URL 解码器 :

标签 c++ url pointers urldecode pointer-arithmetic

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

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

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

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

http://pastebin.com/AVDnr6cK

这个函数究竟是如何使用这个数组将十六进制转换为十进制,然后将十进制转换为等效的 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/

相关文章:

php - 如果最后一个字符是 "/",则将其删除

C++ 指针不起作用?

c - 为什么打印指针值不需要这个二维数组的星号

c++ - 是否可以使用 gtest 或 gmock 模拟被调用函数的返回值?

c++ - 在 C++ 中调用线程两次时变量重叠

c++ - 在 C++ 中解析二进制消息。有例子的库吗?

url - 南希导航到没有斜杠的 URL?

java - 从 JBoss AS 7 上的类路径加载 URL 资源

c++ - 指向对 const null 值的引用的指针

c++ - 在 VC++ 2005 中将 crlf 添加到 WCHAR *