当前位置: 首页 > 知识库问答 >
问题:

如何将字节数组转换为int/long

周鸿光
2023-03-14

我必须在皈依前向小恩迪安下订单。

在第一种情况下,我很容易进行转换:

byte[] serial = {-91, -101, 62, 55};
int serialNumber = java.nio.ByteBuffer.wrap(serial).order(ByteOrder.LITTLE_ENDIAN).getInt();
//serialNumber == 926849957 //Nice, works!!!!

在第二种情况下,转换不起作用:

byte[] serial = {-45, 12, 115, -28};
int serialNumber = java.nio.ByteBuffer.wrap(serial).order(ByteOrder.LITTLE_ENDIAN).getInt();
//serialNumber == -462222125 //Wrong conversion. The right answer is 3832745171.

数字3832745171大于整数。MAX_VALUE,但如果我试图转换为long,我也会遇到问题。

我怎么能这么做?谢谢。

尝试将字节数组转换为int/long类型。

共有2个答案

壤驷安和
2023-03-14

3832745171是可以使用无符号整数的值,但它不是有符号整数的有效值。它与-46222125的区别在于Math。pow(2,32)

从中的例子http://www.java2s.com/example/java/java.nio/get-unsigned-int-from-bytebuffer.html似乎可以使用“long”中的值来存储“Unsigned Integer”值。

将链接中的逻辑与您的代码结合起来,就像长序列号=(java.nio.ByteBuffer.wrap(串行). order(Byteorder.LITTLE_ENDIAN). getInt()

倪振海
2023-03-14
byte[] serial = {-45, 12, 115, -28};
int serialNumber = java.nio.ByteBuffer.wrap(serial).order(ByteOrder.LITTLE_ENDIAN).getInt();

这为您提供了Javaint中唯一可表示的等价物。

如果你想要它作为一个无符号的值,它将只能适合long,但是你可以写

Integer.toUnsignedLong(serialNumber)

(也就是说,你可以把它存储在一个int中。它仍然是相同的值,只是它的计算方式不同,打印方式也不同;你只能在必要时转换它。)

 类似资料:
  • 问题内容: 我需要将缓冲区的长度存储在4个字节大的字节数组中。 伪代码: 做到这一点的最佳方法是什么?请记住,稍后我必须将该字节数组转换回整数。 问题答案: 您可以使用以下方式将其转换为字节: 注意,这样做时可能必须考虑字节顺序。

  • 问题内容: 如何在python中将字节字符串转换为int? 这样说: 我想出了一个聪明/愚蠢的方法: 我知道必须有内置的东西或在标准库中可以更简单地执行此操作… 这与转换可以使用int(xxx,16)的十六进制数字字符串不同,但是我想转换一个实际字节值的字符串。 更新: 我有点喜欢James的回答,因为它不需要导入另一个模块,但是Greg的方法更快: 我的骇客方法: 进一步更新: 有人在评论中问导

  • 问题内容: 我想从数据库中获取图像。为此,我为图像创建了一个字节数组,该数组由字符串传递,现在我想将该字符串转换为图像格式。我正在将该图像分配给Jlabel字段。代码如下: 问题答案:

  • 问题内容: 我正在尝试从字节数组加载jar,而无需将其写入文件(将其加载到内存中)。我做了一个自定义的ClassLoader,但是当我尝试使用它并加载一个类时,它给了我ClassNotFoundException。 类加载器 主要 它可以正确加载我的课程并运行它,但是我一直在遇到随机错误。 问题答案: 这有点骇人听闻,但是他做了他的工作,这段代码基本上创建了一个伪造的url方案(myjarprot

  • 有什么方法可以将byte[]转换为org.springframework.web.multipart.multipartfile??

  • 问题内容: 我的方法有问题。 在客户端,我想要一个数组而不是JSON 我怎样才能做到这一点? 客户代码: 我的方法返回,但我想从中提取数字,以便使用这些数字进行计算(例如作为)。 我公开了作为JSONObject的功能。 然后我得到错误:无法从JSONObject转换为int [] 2种其他方式 这次我得到:无法从JSONArray转换为int [] … 反正还是行不通.. 问题答案: 我从来没有