从JNI到Java的字符向量

3

我在我的C++代码中有一个char向量。我该如何通过JNI将其返回给Java?在Java中,应该使用什么类似的数据类型来代替它?


如何将C++中的vector<char>变量返回给Java? - imported_lis
可以,但是我建议使用 ArrayList<Integer>。在 C 和 Java 中,sizeof(char) 在底层实现上并不相同。 - Shark
看一下这个问题,了解如何从JNI返回值给Java。我猜你也可以使用字节数组。 - Shark
“我应该在Java中使用什么类似的数据类型?”这个问题其实我们无法给您一个确切的答案,因为这正是问题的症结所在。你的向量中是什么类型的数据,是整数还是字符?如果是整数,范围是多少?如果是字符,那么是哪种字符集和编码方式?或者,是否可以使用字节数组?你必须在Java端有一些使用案例。 - Tom Blodget
我有一个UTF-8字符向量。 - imported_lis
显示剩余2条评论
1个回答

6
这其实很麻烦:在C++中,charsizeof 被标准化为1,可能是 unsignedsigned 类型,如果是后者,它可能是2的补码或1的补码,尽管1的 补码从C++14开始被移除了!与之不同,Java的 char 是一个16位的 unsigned。我认为将您的 char 向量转换的最佳方法是使用Java字节数组类之一。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接