当前位置: 首页 > 面试题库 >

将字节数组值按小端顺序转换为短值

令狐增
2023-03-14
问题内容

我有一个字节数组,其中数组中的数据实际上是短数据。字节按小端顺序排列:

3、1,-48、0,-15、0、36、1

转换为短值时会导致:

259、208、241、292

Java中是否有一种简单的方法可以将字节值转换为相应的短值?我可以编写一个仅占用每个高字节并将其移位8位,或与低字节进行移位的循环,但这会降低性能


问题答案:

使用java.nio.ByteBuffer可以指定所需的字节序:order()。

ByteBuffer具有将数据提取为byte,char,getShort(),getInt(),long,double的方法。

这是一个如何使用它的示例:

ByteBuffer bb = ByteBuffer.wrap(byteArray);
bb.order( ByteOrder.LITTLE_ENDIAN);
while( bb.hasRemaining()) {
   short v = bb.getShort();
   /* Do something with v... */
}


 类似资料:
  • 问题内容: 我有一个接收a的函数,但是我所拥有的a是进行此转换的最佳方法是什么? 我想我可以走很长一段路,然后将其放入字符串并放入字节中,但这听起来很难看,而且我认为还有更好的方法可以做到。 问题答案: 我同意Brainstorm的方法:假设您要传递机器友好的二进制表示形式,请使用该库。OP建议可能会有一些开销。纵观源的实施,我看到它做了一些运行时的决策最大的灵活性。 对?Write()接受一个非

  • 我需要转换整数,我在java中每个套接字发送超过4个字节。问题是,当整数超过9时,即[10, inf]我的崩溃代码。 我在这一行的说明中读到:所有多字节整数值都是用两个的互补符号按大端顺序编码的。 问题是我不知道如何编写合适的转换函数。这是我实现的一个,似乎适用于从0到9的整数。有人能帮我吗?

  • 问题内容: 将转换为的快速方法是什么? 例如 问题答案: 看看ByteBuffer类。 设置字节顺序保证了,,和。 或者,你可以手动执行以下操作: 该班是专为尽管这样的脏手任务。实际上,私有定义了以下辅助方法:

  • 问题内容: 我有一个要加密的字节数组,然后转换为字符串,以便可以传输。当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密。我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使用诸如str.getBytes()之类的东西将其转换为字节数组时,它与我的原始字节数组不匹配。 示例输出: 任何想法如何将接收到的字符串转换为与发送的字节数组匹配的字节数组? 谢谢 问题答案:

  • 问题内容: 假设我有一个4字符串,并且我想将此字符串转换为字节数组,其中字符串中的每个字符都转换为等效的十六进制。例如 我正在尝试让我的输出成为 有没有简单的方法可以做到这一点? 问题答案: 编码功能可以为您提供帮助,编码返回字符串的编码版本 或者你可以使用数组模块

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