我试图理解下面的代码。
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);
}
}
任何帮助将不胜感激。
最佳答案
>>>>
是无符号右移运算符。它也移动了符号位。
& 0xFF
保留位以构成 8 位(字节)值,否则您可能会有一些垃圾。
关于java - "& 0xFF"和 ">>>"移位有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20224088/