2012-09-18 2 views
0

다른 방법으로 (주석 코드에서 알 수 있듯이) 모드를 4 바이트로 변환하여 소켓을 통해 다른 응용 프로그램으로 보내려고했습니다. 그것은 127까지 정수와 잘 작동하고 256을 넘는 정수로 다시 작동합니다. 저는 서명 된 Java 유형과 관련이 있다고 생각하지만 작동시키지 않는 것 같습니다. 다음은 프로그램이 인쇄 한 내용의 몇 가지 예입니다.4 바이트의 Java 정수를 다른 응용 프로그램에 보내는 방법은 무엇입니까?

127 
1111111 
0 
0 
0 
127 
mode, 0: 0 
mode, 1: 0 
mode, 2: 0 
mode, 3: 1111111 

128 
10000000 
0 
0 
0 
-128 
mode, 0: 0 
mode, 1: 0 
mode, 2: 0 
mode, 3: 11111111111111111111111110000000 

    211 
    11010011 
    0 
    0 
    0 
    -45 
    mode, 0: 0 
    mode, 1: 0 
    mode, 2: 0 
    mode, 3: 11111111111111111111111111010011 

306 
100110010 
0 
0 
1 
50 
mode, 0: 0 
mode, 1: 0 
mode, 2: 1 
mode, 3: 110010 

갑자기 한 바이트가 32 비트를 저장할 수 있습니까? 어떻게 해결할 수 있을까요?

답변

0

이 시도 :

int Header = 123456 
ByteBuffer bytes = ByteBuffer.allocate(4); 
bytes.putInt(Header); 
byte[] buffer = bytes.array(); 

바이트 배열 버퍼는 4 바이트의 정수 값을 포함한다.
변경 :

message[i] = bytes[i] & 0xFF; 
+0

시도해 보았습니다. 그것은 코멘트에 있습니다. 같은 결과가있었습니다. – user1468729

+0

try message [i] = bytes [i] & 0xFF; – Riskhan

+0

이제 시도해 보았습니다. 그것은 어느 쪽도 도움이되지 않았다. Btw, 바이트 캐스팅이 필요합니다 : message [i] = (byte) (bytes [i] & 0xFF); – user1468729

관련 문제