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

给定

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教程。

以上是 如何将整数拆分为2个字节的二进制文件? 的全部内容, 来源链接: utcz.com/qa/409005.html

回到顶部