如何将整数拆分为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
并返回anint
,后者是比更大的数据类型byte
。这种情况很安全,因为所有非零位都可放入byte
。有关更多信息,请参见 转化和促销 。
Taylor正确地指出,尽管>>
在这种情况下可以工作,但是如果将此代码概括为
四个 字节(由于Java中int
为32位),则可能会产生错误的结果。在这种情况下,最好使用>>>
代替>>
。有关更多信息,请参见关于
按位运算符和位移位运算符
的Java教程。
以上是 如何将整数拆分为2个字节的二进制文件? 的全部内容, 来源链接: utcz.com/qa/409005.html