我有一个8字节的数组,我想把它转换成相应的数值。
例如:
byte[] by = new byte[8]; // the byte array is stored in 'by'
// CONVERSION OPERATION
// return the numeric value
我想要一个执行上述转换操作的方法。
发布于 2009-06-22 12:01:33
假设第一个字节是最低有效字节:
long value = 0;
for (int i = 0; i < by.length; i++)
{
value += ((long) by[i] & 0xffL) << (8 * i);
}
如果第一个字节是最重要的,那么它就有点不同了:
long value = 0;
for (int i = 0; i < by.length; i++)
{
value = (value << 8) + (by[i] & 0xff);
}
如果超过8个字节,请将long替换为BigInteger。
感谢Aaron Digulla纠正了我的错误。
发布于 2009-06-22 12:03:35
如果这是一个8字节的数值,您可以尝试:
BigInteger n = new BigInteger(byteArray);
如果这是一个UTF-8字符缓冲区,那么您可以尝试:
BigInteger n = new BigInteger(new String(byteArray, "UTF-8"));
发布于 2013-08-01 05:11:47
您还可以对可变长度字节使用BigInteger。您可以将其转换为Long、Integer或Short,以满足您的需要。
new BigInteger(bytes).intValue();
或者表示极性:
new BigInteger(1, bytes).intValue();
https://stackoverflow.com/questions/1026761
复制相似问题