package code;
import java.nio.charset.Charset;
/**
*
Title: Decode
*
Description:
*
Created: 2011-6-23 下午06:55:07
*
* @author ShengYan
* @version
*/
public class Decode {
public static void main(String[] args) {
String str = "%7B%7Btype%3Abannerwithfeatured%2CsdkVersion%3A10%2CcategoryId%3A91%2Cstart%3A0%2Csize%3A10%2CsortType%3A0%2Cresolution%3A%22480x800%22%2Chardware%3A%22%3A%22%2CclientVersion%3A%220.9.9715%22%7D";
StringBuffer buffer = new StringBuffer();
char[] strArray = str.toCharArray();
char[] temp = new char[2];
for (int i = 0; i < strArray.length; i++) {
if (strArray[i] == '%' && i + 1 <= strArray.length
&& i + 2 <= strArray.length) {
temp[0] = strArray[i + 1];
temp[1] = strArray[i + 2];
buffer.append(Decode.change(new String(temp)));
i += 2;
} else {
buffer.append(strArray[i]);
}
}
System.out.println(new String(buffer.toString().getBytes(), Charset
.forName("UTF-8")));
}
public static char change(String str) {
// String str = "7B";
String myStr[] = { "a", "b", "c", "d", "e", "f" };
int result = 0;
int n = 1;
for (int i = str.length() - 1; i >= 0; i--) {
String param = str.substring(i, i + 1);
for (int j = 0; j < myStr.length; j++) {
if (param.equalsIgnoreCase(myStr[j])) {
param = "1" + String.valueOf(j);
}
}
result += Integer.parseInt(param) * n;
n *= 16;
}
char c = (char) result;
return c;
}
}