什么是Java的等同于C的* char

时间:2017-07-13 10:40:54

标签: java c byte

这是我在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);
}

2 个答案:

答案 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

否则,您的应用程序似乎没问题。