5

VB 的Buffer.BlockCopy的 Java 等价物是什么?

for (int i = 0; i < num5; i++) {
    int[] dst = new int[9];
    // Buffer.BlockCopy(bytes, (num2 + &HF8) + (i * 40), dst, 0, 40)
    byte[] buffer2 = new byte[dst[4] - 1];
    // Buffer.BlockCopy(bytes, dst(5), buffer2, 0, buffer2.Length)
}

注意被注释掉的部分......我不知道有一个Java等价物放在那里。

4

3 回答 3

8

如果我正确理解这一点,我想你想要System.arraycopy(). 可以在此处找到它的 JavaDoc

一个简单的例子是:

int[] src = new int[3] {1,2,3};
int[] dst = new int[4];
System.arraycopy(src, 0, dst, 0, 3); // Copies all of src into dst starting at zero.
// Dst would be {1,2,3,0}
于 2013-04-06T01:40:35.293 回答
3

我认为没有直接的等价物。最接近的匹配是System.arraycopy()。但是,当源数组和目标数组具有不同的原始类型时(如在您的示例中使用 byte[] 和 int[]),这不能使用。

于 2013-04-06T01:40:15.433 回答
0

在 java
System.arraycopy 中,从源 Array 到 dest 具有相同的类型名称。

在 C#/VB 中,我可以将浮点数组复制到另一种类型(例如字节 [])。

  float[] floats = [1.2,4.0,3.5,12];

  // Copy to bytes
  byte[] result = new byte[floats.Length * sizeof(short)];
  Buffer.BlockCopy(floats, 0, result, 0, result.Length);
于 2019-07-25T07:30:40.417 回答