C++ 帮助我理解此URL解码器:

C++ 帮助我理解此URL解码器:,c++,url,pointers,urldecode,pointer-arithmetic,C++,Url,Pointers,Urldecode,Pointer Arithmetic,在我自己玩过URL解码之后,我设法想出了一些可行的想法——但它们不是很有效。由于URL解码是我的程序中可能出现严重瓶颈的地方,我决定上网寻找更有效的解决方案。我偶然看到这篇代码专家文章: 现在,我并不反对使用别人的代码,特别是如果它比我的好的话。然而,我想在我之前知道它是如何工作的。使用您不完全理解的代码没有意义 这就是我被卡住的地方,我理解解码函数中正在进行的大部分指针工作。我丢失的是HEX2DEC数组和相关的转换算法。网站上没有提供,而是在下载示例中提供,因此为了您的方便,我将在这里发布它

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

现在,我并不反对使用别人的代码,特别是如果它比我的好的话。然而,我想在我之前知道它是如何工作的。使用您不完全理解的代码没有意义

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

该函数如何使用该数组将十六进制转换为十进制,然后将十进制转换为其ASCII等效值


再次感谢您的帮助。

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

在主循环中,每当找到
%
时,首先使用数组确定以下两个字符是否为十六进制(
!=-1
),如果是,则转换整个序列。操作
(dec1