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的程序,谢谢
{
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的程序,谢谢
解决方案 »
- 求救,为什么会出现这个错误??
- 如何能自动识别一个时间格式,得到最终日期呢?
- ArrayList清除重复 谢谢。
- java3d调用了VRML文件在eclipse上能运行,但在浏览器上运行出错,WHY?
- 初学JAVA的突破口?
- 超级玛丽的相关问题
- 请教有关JAVA的IO方面的问题!!急!
- 请问那里有jbuilder7或jbuilder6的电子书籍下载?
- 谁有JDK1.3 jdk1.4 的中文doc,或在那里有下载
- 要用OpenFileDialog控件的什么方法才能得到它返回的文件名?
- java.util.Properties.setProperty(key,value)乱码
- 写了一个java程序,通过编译器或者命令行都能正确运行,但是做成jar文件就不能运行了?给分
10411012201160111011701140460990
且楼上的程序试图返回栈内指针,有问题,是得不到返回的字符串的
这段程序的功能是将长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
}