【发布时间】:2015-07-31 15:43:27
【问题描述】:
我需要从字节数组中获取无符号整数。我知道java不支持无符号原语,我必须使用更高的原语(长)来获得无符号整数。很多人通常会建议这样的解决方案:
public static long getUnsignedInt(byte[] data)
{
ByteBuffer bb = ByteBuffer.wrap(data);
bb.order(ByteOrder.LITTLE_ENDIAN);
return bb.getInt() & 0xffffffffl;
}
但这并不聪明,因为我们必须得到有符号整数,然后将其转换为无符号整数,这当然可能导致溢出异常。我看到使用 BigInteger 或新的 java 8 无符号功能的其他解决方案,但我无法让它做我想做的事。
【问题讨论】:
-
我不能让它做我想做的事你能澄清你想要什么吗?
-
@SotiriosDelimanolis 我相信 OP 正在寻找另一种方法(使用 BigInteger)从字节 [] 生成无符号整数
-
你有 4 个字节。您不能直接跳到
long。您需要先获取int。 -
你确定你的输入字节是小端字节序吗?除此之外,我认为问题中的代码比您接受的代码要好...