什么是 C 的 *char 的 Java 等价物

Posted

技术标签:

【中文标题】什么是 C 的 *char 的 Java 等价物【英文标题】:What's the Java equivalent of C's *char 【发布时间】:2017-12-18 02:21:52 【问题描述】:

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

【问题讨论】:

太感谢了^^ 我不知道怎么做。因为我英语不好..哈哈所以我就自己做吧。 【参考方案1】:

Java 确实有 char,它没有指针,所以 char* 应该是 char[]。 java char 的另一个区别是它在某种程度上类似于 C 宽字符,2 个字节长。 所以最好使用和C char非常相似的java byte,但是不能无符号,java byte总是有符号的,但是你想用的方式无所谓。

【讨论】:

【参考方案2】:

您可以在 Java (char[]) 中使用 char 数组。但是,您的数据会更大(Java 中每个字符 2 个字节,而 C 中每个字符 1 个字节)。

如果您需要将输入转换为字符串,常用字符将存储为 1 个字节。 你可以在这里阅读更多内容:Size of char in Java

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

【讨论】:

以上是关于什么是 C 的 *char 的 Java 等价物的主要内容,如果未能解决你的问题,请参考以下文章

字符变量 [] = 0;和 char var[1];在C中是等价的吗?

Javascript中C++ std::unordered_map<char, int> 的等价物是啥?

堆栈上 char 缓冲区/ASCII 字符串的 Rust 等价物是啥?

C- 中的字符串是 char *str 真的等价于 char str [] 吗? [复制]

Java 的 String[] 的 Kotlin 等价物是啥?

c语言中的func类型是啥