gpt4 book ai didi

java - 在java中使用String来保存二进制数据是错误的吗?

转载 作者:行者123 更新时间:2023-11-30 00:48:16 30 4
gpt4 key购买 nike

我需要将二进制数据(来自文件的红色)从 Java 传递到 C++(使用 jni),所以我有一个需要字符串的 C++ 函数(因为在 C++ 中字符串只是字符数组)。

我使用以下代码在 java 中读取我的二进制文件:

byte[] buffer = new byte[512];
FileInputStream in = new FileInputStream("some_file");
int rc = in.read(buffer);
while(rc != -1)
{
// rc should contain the number of bytes read in this operation.
// do stuff...

// next read
rc = in.read(buffer);
String s = new String(buffer);
// here i call my c++ function an pass "s"
}

我担心创建字符串的行,当我将缓冲区放入字符串中时实际发生了什么?似乎当数据到达我的 C++ 代码时,它与我期望的不同。

“字符串”构造函数是否以某种方式更改了数据?

最佳答案

字符串根本不是字符数组。它们是复杂的 Unicode 怪兽,在代码点、不同的二进制编码等之间具有语义交互。所有 程序都是如此。 C++ 的唯一不同之处在于,他们还没有停止提示并开始着手解决它。

在所有语言中,对于二进制数据,使用显式二进制数据类型,如字节数组。

关于java - 在java中使用String来保存二进制数据是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32149807/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com