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

如何在Java中将字节转换为long?

尚嘉勋
2023-03-14
问题内容

我正在从硬件设备读取8字节的数据。我需要将它们转换为数值。我想将它们转换为适合8个字节的长度。我对Java和低级数据类型操作不是很熟悉。我似乎有两个问题(除了几乎没有有关硬件的文档的事实外),这些字节期望是无符号的,所以我无法进行直接整数转换。我不确定它们是什么字节序。

任何意见,将不胜感激。

最终结束了(摘自一个星期前我可能应该已经读过的一些源代码):

public static final long toLong (byte[] byteArray, int offset, int len)
{
   long val = 0;
   len = Math.min(len, 8);
   for (int i = (len - 1); i >= 0; i--)
   {
      val <<= 8;
      val |= (byteArray [offset + i] & 0x00FF);
   }
   return val;
}

问题答案:

对于字节序,请测试一些您知道的数字,然后将使用字节移位将它们移到长整数。

您可能会发现这是一个起点。
http://www.janeg.ca/scjp/oper/shift.html

困难在于,取决于字节序会改变您的操作方式,但是您将移位24、16、8,然后添加最后一个(基本上)(如果执行32位操作),但是您需要更长的时间,因此只需进行额外的移位即可。



 类似资料:
  • 问题内容: 我知道Java不允许无符号类型,所以我想知道它如何将整数转换为字节。假设我有一个值为255的整数a,并且将该整数转换为一个字节。该值表示在字节11111111中吗?换句话说,该值是否更多地视为带符号的8位整数,还是仅直接复制该整数的后8位? 问题答案: 这称为缩小原始转换。根据规格: 将有符号整数缩小为整数类型 T会 简单地丢弃除 n个 最低阶位以外的所有位,其中 n 是用于表示类型

  • 问题内容: 如何将转换为而不进行转换? 我试过了: 但是doc文件与字节不同(字节是 二进制信息 )。例如: 并且是不同的。 PS:UTF-8不起作用,因为它会将一些字节转换为不同的值。我测试了,它不起作用。 PS2:不,我不要。 问题答案: 您需要指定所需的编码,例如UTF-8 并且将是相同的。 要解码,您需要知道使用了哪种编码,以确保可以正确解码。

  • 问题内容: 我正在尝试将一个转换成三个表示那个(大端)。 我敢肯定,这与位和移位有关。但是我不知道如何去做。 例如: *注意,我知道一个int是4个字节,三个字节有上溢/下溢的机会。 问题答案: 要获取最低有效字节: 第二个最低有效字节: 和第三个最低有效字节: 说明: 将值与0xFF(二进制为11111111)按位与将返回该数字中的最低有效8位(位0至7)。将数字右移8次会将第8至15位置于第0

  • 本文向大家介绍如何在Java中将PDF转换为字节数组?,包括了如何在Java中将PDF转换为字节数组?的使用技巧和注意事项,需要的朋友参考一下 您可以使用FileInputStream类的方法从PDF文件中读取数据,该方法需要字节数组作为参数。 示例 样本.pdf

  • 有没有办法将Java转换为(而不是装箱的)? 在尝试此过程中: 我得到了不同的输出。无法显示第一个输出,因为它是gzip字符串。 第二个是地址。我做错什么了吗?我需要一个中的结果来将其馈送到gzip解压缩器,如下所示。

  • 我遇到了将字节字符串转换为字节数组的强制转换问题。 我有一个字符串[B@1a758cb。也就是Base64加密的String的主String"Gunjan"。这里的解密我想把加密的字节串转换成字节[]。 但是String.get字节[]不适合我。String.getBytes[]给出字节String的字节数。 我该怎么做??我是否必须迭代字节字符串中的每个字符并将其转换为字节[]?? 编辑 我使用