这是我在C中的代码。
int test(unsigned char* input, unsigned char* output, int in_len)
{
int i, out_len = 0;
for(i = 0; i < in_len; i++)
{
if (*(input+i) == 0x23)
{
i++;
*output++ = *(input+i) ^ 0x40;
}
else
{
*output++ = *(input+i);
}
out_len++;
}
return(out_len);
}
我想将我的代码转换为Java。
在调用test()
方法之前,我有base64值。
解码后,我通过char *
调用test()
方法
但是,Java没有char*
类型。
如何使用Java来使用此代码?
帮帮我......谢谢..
public static byte[] test(byte[] input, byte[] output, int in_len)
{
int i, out_len = 0;
for(i = 0; i < in_len; i++)
{
if ((input[i]) == 0x23)
i++;
output[i] = (byte) (input[i] ^ 0x40);
}
else
{
output[i] = input[i];
}
out_len++;
}
return(output);
}
答案 0 :(得分:0)
Java确实有char,它没有指针,所以char *应该是char []。 java char的另一个不同之处在于它与C wide-char类似,长度为2个字节。 因此,使用与C char非常相似的java字节更好,但不能无符号,java字节总是签名,但你想要使用的方式并不重要。
答案 1 :(得分:0)
您可以在Java中使用char数组(char[]
)。但是,您的数据将更大(Java中每个字符2个字节,而C中每个字符1个字节)。
如果您需要将输入转换为String,则常用字符将存储为1个字节。 您可以在此处阅读更多内容:Size of char in Java
否则,您的应用程序似乎没问题。