【问题标题】:What's the Java equivalent of C's *char什么是 C 的 *char 的 Java 等价物
【发布时间】: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);
}

【问题讨论】:

  • 太感谢了^^ 我不知道怎么做。因为我英语不好..哈哈所以我就自己做吧。

标签: java c byte


【解决方案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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2016-07-26
      • 2010-12-07
      • 2010-11-22
      相关资源
      最近更新 更多