繁体   English   中英

“&0xFF”和“>>>”转移做什么?

[英]What do “& 0xFF” and “>>>” shifting do?

我想了解下面的代码。

方法getKey()返回一个字符串,getDistance()返回一个double。 代码是从一个类中获取的,该类用于保存String(键)和Double(距离)对。

更具体地说,我不确定进行转移的线路是做什么的。

public void serialize (byte[] outputArray) {

    // write the length of the string out
    byte[] data = getKey().getBytes ();
    for (int i = 0; i < 2; i++) {
      outputArray[i] = (byte) ((data.length >>> ((1 - i) * 8)) & 0xFF);
    }

    // write the key out
    for (int i = 0; i < data.length; i++) {
      outputArray[i + 2] = data[i];   
    }

    // now write the distance out
    long bits = Double.doubleToLongBits (getDistance());
    for (int i = 0; i < 8; i++) {
      outputArray[i + 2 + data.length] = (byte) ((bits >>> ((7 - i) * 8)) & 0xFF);
    }
}

任何帮助将非常感激。

首先阅读Java关于按位运算符的教程 简而言之:

>>>是一个无符号的右移

& 0xFF是用& 0xFF(bits >>> ((7 - i) * 8))进行0xFF

>>>是无符号右移操作员。 它也会移动符号位。

& 0xFF保留位以产生8位(字节)值,否则您可能会有一些垃圾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM