사는게힘듭니다
1k
2019-04-15 17:38:42 작성 2019-04-15 17:39:06 수정됨
3
106

자바 ByteBuffer 객체 관련 질문드립니다.


public static int byte(byte[] bytes, int size) {
 
ByteBuffer buff = ByteBuffer.allocate(size);
buff.clear();   
buff.order(ByteOrder.BIG_ENDIAN);
buff.put(bytes);
buff.flip();
 
return buff.getInt();
}

매개변수로 전달되는 byte[] 배열엔 49,50,51,52가 들어있고 size변수는 4가 들어있습니다.
위에 저 실행구문을 실행하고
리턴되는 값이 8억2천이 나오더라구요...
왜 8억2천이 나오는지 그 이유를 모르겠습니다..
0
0
  • 답변 3

  • scissor hands
    53
    2019-04-16 00:49:27

    49, 50, 51, 52를 16진수로 변환하면 0x31, 0x32, 0x33, 0x34 이고 0x31323334 -> 825,373,492 입니다.

    0
  • 사는게힘듭니다
    1k
    2019-04-16 07:59:51

    왜 16진수로 변환하는건가요?

    0
  • scissor hands
    53
    2019-04-16 16:07:20

    2진수 기반이니 49 * 2^24 + 50 * 2^16 + 51 * 2^8 + 52 * 2^0 이렇게 계산해야 하고, 이것은 그냥 16진수로 변환해서 붙인거랑 차이가 없죠. 뭐라 더 설명드리기가 힘드네요.

    이걸 읽어보세요. https://genesis8.tistory.com/37https://woodforest.tistory.com/150

    추가로 구글 검색으로 "메모리 big-endian 숫자값" 을 하신 결과 링크들을 읽어보시면 더 좋겠습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.