我想了解下面的代码。“&0xFF”和“>>>”位移做了什么?
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);
}
}
任何帮助将不胜感激。
辛辣的细节:它是位移,不是字节移位。你看过这些文档,看看这些运营商在做什么? –
那么......因为它的位移是8的倍数,所以他实际上正在移位字节 –