找到个C的算法,没看明白,有请高手EnPas(char *CodeStr,int n)//n是CodeStr的长度
{
    int CodeLen;
    int CodeSpace;
    int NewCode;
    Codelen=30;
    CodeSpace=CodeLen-n;
    if(!(CodeSpace <1))
        for(int i=1;i<CodeSpace+1;i++)
        {
            CodeStr=realloc(CodeStr;n+i);
            CodeStr[n+i-1]=21;
            CodeStr[n+i]='\0';
        }
    NewCode=1;
    int Been;
    for(int cecb=1;cecb<CodeLen+1;cecb++)
    {
        Been=CodeLen + CodeStr[cecb+1]*cecb;
        NewCode=NewCode*Been;
    }
    CodeStr=NewCode;
    NewCode=NULL;
    for(int cec=1;cec<Len(NewCode)+1;cec++)
    {
        NewCode = realloc(NewCode,n+cec);
        NewCode[n+cec+1] =  CfsCode(CodeStr[cec+1],n+cec+2);
    }
    for(int cec = 20 ;cec< Len(NewCode) - 17 ; cec+=2) 
    {
        EnPas = realloc(EnPas,n+cec+1)
        EnPas[n+cec] = NewCode[cec+1] ;
     }
}
char * CfsCode(char *Word;int n)//n的意义同上

    char * cfccode;
    for{int cc = 1 ;cc< n+1;cc++) 
    {
        cfscode = realloc|(cfscode,n+cc );
        cfscode[n+cc+1]= Word[cc+1]; 
    }
    return cfscode ;
}

解决方案 »

  1.   

    我自己根据javascript 的改了一个,得到的结果是一样的。希望能你有用package com.robot.web;public class CFS { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "hehehehe";
    System.out.println(CFS(str));
    } private static String CFS(String codeStr) {
    String cfsCode = "";
    int CodeLen = 30, CodeSpace, Been;
    CodeSpace = CodeLen - codeStr.length();
    char c = 21;
    if (CodeSpace > 1) {
    for (int cecr = 1; cecr <= CodeSpace; cecr++) {
    codeStr = codeStr + c;
    }
    }
    Double NewCode = 1d;
    for (int cecb = 1; cecb <= CodeLen; cecb++) {
    Been = CodeLen + codeStr.charAt(cecb - 1) * cecb;
    NewCode = NewCode * Been;
    }
    codeStr = NewCode.toString().toUpperCase();
    codeStr=codeStr.replace("E", "E+");
    String NewCode2 = "";
    for (int cec = 1; cec <= codeStr.length(); cec++) {
    String tempStr="";
    try {
    tempStr = codeStr.substring(cec - 1, cec + 2);
    } catch (Exception ex) {
    tempStr = codeStr.substring(cec - 1);
    }
    NewCode2 = NewCode2 + CfsCode(tempStr);
    }
    String CfsEncodeStr = "";
    for (int cec = 20; cec <= NewCode2.length() - 18; cec += 2) {
    CfsEncodeStr = CfsEncodeStr + NewCode2.charAt(cec - 1);
    }
    return CfsEncodeStr;
    } private static String CfsCode(String nWord) {
    String result = "";
    for (int cc = 1; cc <= nWord.length(); cc++) {
    result += nWord.charAt(cc - 1)*1;
    }
    Long DecimalValue = Long.valueOf(result);
    result = Long.toHexString(DecimalValue);
    return result;
    }
    }