private String eqv(String s)
    {
        if(s == null)
            return "null";
        if(s.equals(""))
            return "null";
        int ai[] = new int[16];
        char ac[] = s.toCharArray();
        int i = 0;
        for(int j = 0; j < ai.length && j < ac.length; j++)
        {
            ai[i] = ac[j];
            if((i += 2) >= ai.length)
                i = 1;
        }        String s1 = "";
        for(int k = 0; k < ai.length; k++)
            s1 = s1 + ai[k];        return s1;
    }
最好能够翻译成c或delphi的程序,谢谢

解决方案 »

  1.   

    好像不行:( 这是一段加密程序 比如hztour.cn他的结果是
    10411012201160111011701140460990
      

  2.   

    帮我用上面的函数做一个java程序也行,只要能够有输入框输入s,结果返回s1就行
      

  3.   

    上面的程序不能满足要求,因为该程序返回的都是错位后字符串,未进行内码变换。
        且楼上的程序试图返回栈内指针,有问题,是得不到返回的字符串的
        这段程序的功能是将长16的串进行错位变换,前8个字符放在奇数位置,后8个字符放在偶数位置,不足16个字符则放0    再将变换后的字符的 unicode 码以十进制字符的形式输出成一个串    如 01234567ABCDEFG 先换成 0A1B2C3D4E5F6G7H,再将其unicode码输出成串(空格是我加的)
        48  65  49  66  50  67  51  68  52  69  53  70  54  71  55  72
        所以转换成C后会有问题,JAVA采用的是unicode码,但C里默认字符以ACSII码存储的。转换西文时问题还不大,但处理双字节字符时会当作两个字符处理,与原程序就有区别了。    有一个解决的方法是在 VC 中用 wchar_t 字符类型,编译时加上 UNICODE 选项,改过后对字符串处理的函数有所不一样,下面的程序需要改动才行。
    // 这个程序是用 TC2 编译的,当然也可以用VC编译,但注释1、2两处理有可能要去掉#include <stdio.h>
    #include <string.h>
    #include <conio.h>  // 1char* eqv(char *dest, char *src)
    {
        int j, tmp;
        int len = strlen(src);
        char *p = dest;    if(src == 0 || *src == '\0')
            return 0;    for(j=0; j<8 && j<len; ++j)
        {
            // 前8个字符
            sprintf(p, "%d  ", *(src+j)); //为了使输出清楚,%d我故意加了两个空格
            // 指针移到串尾
            while(*p != '\0')
                ++p;        // 后8个字符
            tmp = j+8 > len ? 0 : (int)(*(src+j+8));
            sprintf(p, "%d  ", tmp);
            // 指针移到串尾
            while(*p != '\0')
                ++p;
        }    return dest;
    }void main()
    {
        int i=0;
        char s1[] = "01234567ABCDEFGH";
        char s2[80];
        printf("%s\n", eqv(s2, s1));    getch(); // 2
    }
      

  4.   

    for(j=0; j<8 && j<len; ++j)  ===>   for(j=0; j<8 && j<len/2; ++j)