2011-05-22 91 views
0

自己用URL解码后,我设法想出了一些可行的想法 - 但效率不高。由于URL解码是一个可以在我的程序中发生严重瓶颈的地方,我决定在互联网上寻找更有效的解决方案。我跑过这个codeguru文章:帮我理解这个URL解码器:

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

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

这里是我卡住的地方,我理解解码函数中正在进行的大部分指针工作。我迷失的地方是HEX2DEC阵列和相关的转换算法。这不是在网站上提供,而是在例如下载,所以我会用解码功能一起张贴在这里为您提供方便:

http://pastebin.com/AVDnr6cK

究竟是如何使用这个数组此功能可将十六进制数转换到十进制,然后小数到它的ASCII等效?

再次感谢您的帮助。

回答

2

阵列是一个查询表,用于作为指标它将提供每ASCII字符或者-1,如果字符不是十六进制字符(在[0..9][A..F][a..f])或转换到十六进制字符的整数。

在主循环中,无论何时发现%,数组首先用于确定以下两个字符是否为十六进制(!= -1),如果是,则转换整个序列。操作(dec1 << 4) + dec2相当于dec1 * 16 + dec2,表示转换为两个十六进制字符的8位整数。