什么是 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 [] 吗? [复制]