gpt4 book ai didi

java - 将有符号整数转换为无符号长整数的最佳方法?

转载 作者:IT老高 更新时间:2023-10-28 20:32:57 24 4
gpt4 key购买 nike

对于 Java 中的某些哈希函数,最好将值视为无符号整数(例如,用于与其他实现进行比较),但 Java 仅支持有符号类型。我们可以将签名的 int 转换为“未签名的”long,如下所示:

public static final int BITS_PER_BYTE = 8;
public static long getUnsignedInt(int x) {
ByteBuffer buf = ByteBuffer.allocate(Long.SIZE / BITS_PER_BYTE);
buf.putInt(Integer.SIZE / BITS_PER_BYTE, x);
return buf.getLong(0);
}
getUnsignedInt(-1); // => 4294967295

但是,这个解决方案对于我们真正在做的事情来说似乎有点过分了。有没有更有效的方法来实现同样的目标?

最佳答案

这样的?

int x = -1;
long y = x & 0x00000000ffffffffL;

还是我错过了什么?

public static long getUnsignedInt(int x) {
return x & 0x00000000ffffffffL;
}

关于java - 将有符号整数转换为无符号长整数的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578639/

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