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

如何将整数拆分为2个字节的二进制文件?

余阳秋
2023-03-14
问题内容

给定

private int width = 400;
private byte [] data = new byte [2];

我想将整数“宽度”分成两个字节,并以高字节和低字节加载data [0]和低字节。

即二进制值400 = 1 1001 0000,因此data [0]应包含0000 0001,data [1]应包含1001 0000


问题答案:

使用简单的按位运算:

data[0] = (byte) (width & 0xFF);
data[1] = (byte) ((width >> 8) & 0xFF);

这个怎么运作:

  • & 0xFF 屏蔽除最低的八位以外的所有位。
  • >> 8 通过将所有位向右移动8位来丢弃最低的8位。
  • 强制转换为字节是必要的,因为这些按位运算对an起作用int并返回an int,后者是比更大的数据类型byte。这种情况很安全,因为所有非零位都可放入byte。有关更多信息,请参见 转化和促销

编辑: Taylor正确地指出,尽管>>在这种情况下可以工作,但是如果将此代码概括为
四个 字节(由于Java中int为32位),则可能会产生错误的结果。在这种情况下,最好使用>>>代替>>。有关更多信息,请参见关于
按位运算符和位移位运算符

的Java教程。



 类似资料:
  • 将一个整数,分拆为若干整数的和。例如实现: 4=3+1 4=2+2 4=2+1+1 4=1+1+1+1 解决(Python) #! /usr/bin/env python #encoding:utf-8 """ """ def int_divided(m,r,out_list): if(r==0): return True tm=r while tm>0:

  • 我想编程一个16/32位的EEPROM。我正在用C程序编写这个文件,但是似乎只执行8位?我写了一个简单的例子,使用xxd(和hextump)查看结果,但文件似乎只有8位。我想知道是否由于hexdump的限制,我只能看到8位 有人知道我如何检查所有的位都被写入文件吗? 使用xxd我看到: 编辑:我试图确保有32位写入文件。xxd的结果是: 其中显示有16位用于,但其他16位在哪里?理想情况下,我希望

  • 问题内容: 在Java中将字符串拆分为1024个字节的块的有效方法是什么?如果有多个块,则需要在所有后续块中重复标头(固定大小的字符串)。 问题答案: 字符串和字节是完全不同的两件事,因此要将字符串拆分为字节与将绘画拆分为经文一样没有意义。 您实际上想做什么? 要在字符串和字节之间进行转换,您需要指定一种编码,该编码可以对String中的所有字符进行编码。根据编码和字符,其中一些可能跨越一个以上的

  • 我不知道如何在这里放入代码,这样我就可以显示我到目前为止所测试的内容,仅仅是为了重新熟悉整数中一定量数字的拆分。 编辑以添加: ^这是我到目前为止的结果,但现在我的问题是,我需要将每个整数的数字存储在不同的列表中。这是从文件中读取的未定数量的整数。用于计数和结束循环的数字只是示例。 对代码的最新更新:我现在需要知道的几乎是如何让循环知道txt文件中没有更多的行了。

  • 我有一个字符串数组,表示二进制数(不带前导零),我想将其转换为相应的10进制数。考虑: 最好的方式是什么?我一直在探索java。lang.number.*没有找到直接的转换方法<代码>整数。parseInt(b)生成一个等于字符串的整数。。。e、 1001变成了1001而不是9。。。而且似乎不包括输出基的参数转换方向错误。我怀疑我需要进行多步转换,但似乎找不到方法或子类的正确组合。我也不确定前导零

  • 问题内容: 我有以下代码: 我将有许多服务(如一项服务),并且我不想将它们全部放在同一个文件中。 我在Stack Overflow中读了另一个问题,我可能需要这样的其他文件:在该文件中写入所有服务,但是当我启动Node时会抛出该错误。 如何分隔代码? 问题答案: 您可以在不同的文件(例如 test-routes.js)中 定义路由,如下所示: 现在在您的主文件中说出 server.js, 您可以像