我想了解下面的代碼。「&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的倍數,所以他實際上正在移位字節 –