2011-05-22 88 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位整數。