public class test {    public String UncryptKey(String ASrc, String AKey) {
        String AOut = "";
        String dest = "";
        int KeyLen = 0, KeyPos = 0, offset = 0;
        int SrcPos = 0, SrcAsc = 0, TmpSrcAsc = 0;
        if (ASrc.length() == 2)
            return AOut;        KeyLen = AKey.length();
        KeyPos = 0;
        offset = Integer.parseInt('$' + ASrc.substring(1, 2));
        SrcPos = 3;
        do {
            SrcAsc = Integer.parseInt('$' + ASrc.substring(SrcPos, 2));
            if (KeyPos < KeyLen)
                KeyPos = KeyPos + 1;
            else
                KeyPos = 1;
            TmpSrcAsc = SrcAsc ^ AKey.charAt(KeyPos);
            if (TmpSrcAsc <= offset)
                TmpSrcAsc = 255 + TmpSrcAsc - offset;
            else
                TmpSrcAsc = TmpSrcAsc - offset;
            dest = dest + (char) TmpSrcAsc;
            offset = SrcAsc;
            SrcPos = SrcPos + 2;
        } while (SrcPos < ASrc.length());
        AOut = dest;
        return AOut;
    }    public static void main(String[] args) {
    }
}

解决方案 »

  1.   

    这个地方还是不对啊
    offset = Integer.parseInt('$' + ASrc.substring(1, 2));java.lang.NumberFormatException: For input string: "$D"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:468)
    at java.lang.Integer.parseInt(Integer.java:518)
    at Cdmis.UncryptKey(Cdmis.java:113)
    at Cdmis.main(Cdmis.java:144)
    Exception in thread "main" 
    Output completed (1 sec consumed) - Normal Termination
      

  2.   

    offset = Integer.parseInt('$' + ASrc.substring(1, 2));
    这个地方'$'是一个进制标志,具体代表什么不清楚,你把它去掉
    将这行改成
    offset = Integer.parseInt(ASrc.substring(1, 2),16);
    试一试