2012-10-31 6 views
-1

입력으로 {20, 250, 12, 255}와 같은 short 배열이 생성됩니다.
난 [바이트 위치로 변환 할 필요가 {20, -6,12는, -1}
난 ByteBuffer를 사용하려고 :짧은 배열을 Java의 부호있는 바이트 배열로 변환하십시오.

short[] data = {20, 250, 12, 255};  
    ByteBuffer dbuf = ByteBuffer.allocate(data.length*2); 
    dbuf.asShortBuffer().put(data); 
    byte[] array = dbuf.array(); 

그러나 출력의 형식 : {0,20,0 , -6,0,12,0, -1}
{20, -6,12, -1}과 같이 부호있는 바이트 배열을 얻는 방법은 무엇입니까?

+1

'자바 byte'에 서명. 바이트 값 255는 없습니다. –

+0

가장 단순한 것은 값을 순환하여 짧은 배열에서'(byte) '형변환을 사용하여 바이트 배열에 지정하는 것입니다. ByteBuffer를 생성하는 것은 느리고, 더 명확하지 않으며, 오류가 발생하기 쉽습니다. –

답변

3

자바의 바이트가 부르기 때문에 서명 된 byte [] 만 사용하면됩니다. 그런 출력을 원한다면 short로 변환 할 필요가 없습니다.


아래는 전환 할 수없는 메커니즘 일뿐입니다.

배열을 반복하고 다운 캐스트합니다.

short[] data = { 20, 250, 12, 255 }; 
    byte[] bytes = new byte[data.length]; 
    int count = 0; 
    for (short i : data) { 
     bytes[count++] = (byte)i; 
    } 
    System.out.println(Arrays.toString(bytes)); 

출력 :

[20, -6, 12, -1] 
관련 문제