首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将字节数组转换为数值(Java)?

如何将字节数组转换为数值(Java)?
EN

Stack Overflow用户
提问于 2009-06-22 11:52:39
回答 6查看 152.3K关注 0票数 96

我有一个8字节的数组,我想把它转换成相应的数值。

例如:

代码语言:javascript
复制
byte[] by = new byte[8];  // the byte array is stored in 'by'

// CONVERSION OPERATION
// return the numeric value

我想要一个执行上述转换操作的方法。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-22 12:01:33

假设第一个字节是最低有效字节:

代码语言:javascript
复制
long value = 0;
for (int i = 0; i < by.length; i++)
{
   value += ((long) by[i] & 0xffL) << (8 * i);
}

如果第一个字节是最重要的,那么它就有点不同了:

代码语言:javascript
复制
long value = 0;
for (int i = 0; i < by.length; i++)
{
   value = (value << 8) + (by[i] & 0xff);
}

如果超过8个字节,请将long替换为BigInteger

感谢Aaron Digulla纠正了我的错误。

票数 113
EN

Stack Overflow用户

发布于 2009-06-22 12:03:35

如果这是一个8字节的数值,您可以尝试:

代码语言:javascript
复制
BigInteger n = new BigInteger(byteArray);

如果这是一个UTF-8字符缓冲区,那么您可以尝试:

代码语言:javascript
复制
BigInteger n = new BigInteger(new String(byteArray, "UTF-8"));
票数 17
EN

Stack Overflow用户

发布于 2013-08-01 05:11:47

您还可以对可变长度字节使用BigInteger。您可以将其转换为Long、Integer或Short,以满足您的需要。

代码语言:javascript
复制
new BigInteger(bytes).intValue();

或者表示极性:

代码语言:javascript
复制
new BigInteger(1, bytes).intValue();
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1026761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档