3
왜 내 readShort 함수가이 숫자를 제대로 읽지 못하는지 해결책을 찾고 있습니다 (602).바이트 배열에서 짧은 읽기
바이트 배열은 포함이 상대적으로 큰 가치가 올 때까지 잘 작동하고있다 는 0x02의 0x05는 0x02 0x5A
byte tab = pkt.read(); //successfully reads 2
byte color = pkt.read(); //successfully reads 5
short len = pkt.readShort(); //problem
내 내의 readShort 기능.
public short readShort() {
short read = (short)((getBytes()[0] << 8) + getBytes()[1] & 0xff);
return read;
}
25A는 602이지만,이 값은 len = 90 (5A)입니다. 그러면 0x02를 읽지 않는 이유는 무엇입니까?
죄송합니다. 내 기능에 여분의 괄호 세트가 필요했습니다. 해결했다 : short read = (short)(((getBytes()[0] & 0xff) << 8) + (getBytes()[1] & 0xff))
이 나 수도를하지 않을 수도 같은
DataInputStream
뭔가를 사용할 수 있지만 그것이 될 수있는' getBytes() [0] << 8' 라인. '(getBytes() [0] & 0xff) << 8'로 바꾸십시오. – Pokechu22나는 그것을 시도했지만 길이가 90이라고 여전히 말하고있다. 어느 쪽이든, 그것을 고쳤다. 다른 괄호 세트가 필요했습니다. 새로운 코드는 짧은 읽기 = (짧은) (((getBytes() [0] & 0xff) << 8) + (getBytes() [1] & 0xff) 고마워! – Rahul
'(짧은) ((짧은) getBytes() [0]) << 8)' –