gpt4 book ai didi

Java 将 long 转换为字节 - 哪种方法更有效

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:58 25 4
gpt4 key购买 nike

我有两种方法可以将 long 转换为字节数组。

for (int i = 0; i < 7; i++) {
data[pos + i] = (byte) (value >> (7- i - 1 << 3));
}

for (int i = 7; i >= 0; --i) {
data[p + i] = (byte)(newl & 0xff);
newl >>= 8;
}

这两个操作哪个更有效率?

最佳答案

我建议您看看 Java 代码是如何做到的。

public final void writeLong(long v) throws IOException {
writeBuffer[0] = (byte)(v >>> 56);
writeBuffer[1] = (byte)(v >>> 48);
writeBuffer[2] = (byte)(v >>> 40);
writeBuffer[3] = (byte)(v >>> 32);
writeBuffer[4] = (byte)(v >>> 24);
writeBuffer[5] = (byte)(v >>> 16);
writeBuffer[6] = (byte)(v >>> 8);
writeBuffer[7] = (byte)(v >>> 0);
out.write(writeBuffer, 0, 8);
incCount(8);
}

如您所见,没有循环,您的操作就更少了。

最快的方法是根本不这样做,而是使用 Unsafe.writeLong() 因为这需要很长时间并将其直接放入内存而不是将其分解为字节。这可以快 10 倍以上。

关于Java 将 long 转换为字节 - 哪种方法更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687772/

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