我希望加快我的程序。目前我有一个功能可以做到这一点:
public void updateBitmap(byte[] buf, int thisPacketLength, int standardOffset, int thisPacketOffset) {
int pixelCoord = thisPacketOffset / 3 - 1;
for (int bufCoord = standardOffset; bufCoord < thisPacketLength; bufCoord += 3) {
pixelCoord++;
pixelData[pixelCoord] = 0xFF << 24 | (buf[bufCoord + 2] << 16) & 0xFFFFFF | (buf[bufCoord + 1] << 8) & 0xFFFF | buf[bufCoord] & 0xFF;
}
}
我基本上需要将整数byte[]
形式复制到一个int[]
数组中。我意识到,如果我可以将int[]
数组视为字节数组,那么我可以直接修改字节,而不是进行所有这些移位,我想这会更快。但是,我不知道该怎么做。
我想要的是拥有int[] pixelData
并且byte[] pixelDataBytes
都指向记忆。如果您理解我的意思,只需成为内存中相同位的两个不同“视图”。然后我可以在不移动它们的情况下更新各个字节,同时仍然保持int[]
代码其他部分所需的表示。似乎这应该是可能的,但我还没有想出如何做到这一点。