【发布时间】:2018-04-05 15:00:45
【问题描述】:
我有字节数组中第一个字符的地址,它的大小: const char *rawImageBytes, int 大小
我想将内容复制到不同的字节数组。然后稍微修改一下。 这就是我现在正在做的事情:
LOGI("FrameReceived will reach here 1");
modifiedRawImageBytes = rawImageBytes;
jint sizeWH = width * height;
jint quarter = sizeWH/4;
jint v0 = sizeWH + quarter;
for (int u = sizeWH, v = v0, o = sizeWH; u < v0; u++, v++, o += 2) {
modifiedRawImageBytes[o] = rawImageBytes[v]; // For NV21, V first
modifiedRawImageBytes[o + 1] = rawImageBytes[u]; // For NV21, U second
}
但是我没有得到正确的颜色,就像我会在 Java 中而不是 c++ 中那样。
我假设会发生这种情况,因为我只是做modifiedRawImageBytes = rawImageBytes; 而不是实际复制整个字节数组,以便它可以从另一个地址指针在内存中开始。
有点c初学者,所以我迷路了,有人可以帮我理解做错了什么吗?
PS:我假设,因为即使我发送 rawImageBytes 而不是 modifiedRawImageBytes,它仍然会被修改
【问题讨论】:
-
您将问题标记为 C++,但文本显示您是 C 的初学者。那么它是哪种语言?
-
好吧,JNI 同时使用了 C 和 C++ ,而且它的代码库都是用这两种语言编写的,所以哪一种都好
-
“所以任何一个都好” - 嗯,但你确实意识到 C 和 C++ 是两种不同的语言,不是吗?当然,您甚至不知道它是用哪种编程语言编写的,就无法处理该代码。
标签: c++ arrays for-loop image-processing size