아래 코드를 이해하려고합니다."& 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의 배수로 조금씩 바뀌기 때문에 그는 실제로 바이트를 이동하고 있습니다 –