2017-12-25 10 views
0

내가 좋아하는 이진 파일에서 바이트 읽고 있어요 그래서길이 4 바이트 배열을 부호없는 int로 변환하려면 어떻게해야합니까?

import java.io.FileInputStream 

val fis = new FileInputStream(fileName) 

val byteArray = new Array[Byte](4) 

fis.read(byteArray) 
그때 부호없는 int 형이 ByteArray 바이트를 변환 할 수있는 방법

?

+0

그 바이트가 나타내는 내용에 따라 달라집니다. – Piro

+0

@ 피로 어떻게 그렇게됩니까? 파일에 대한 문서에서 4 바이트는 부호없는 int를 나타냅니다. – mdornfe1

+0

참조 할 설명서가 없습니다. 정수는 많은 방법으로 4 바이트로 나타낼 수 있습니다. @wentyseven은 이미 4 바이트 문자를 나타내는 것으로 가정합니다. 그것은 게임으로 인코딩을 가져옵니다. 그런 다음 정수는 32 비트 바이너리 숫자로 저장 될 수 있습니다. 더 많은 것 – Piro

답변

1
def bytesToInt(bytes: Array[Byte], littleEndian: Boolean): Int = { 
    val buffer = java.nio.ByteBuffer.wrap(bytes) 
    if (littleEndian) buffer.order(java.nio.ByteOrder.LITTLE_ENDIAN).getInt 
    else buffer.getInt 
} 

바이트가 리틀 엔디안인지 또는 빅 엔디안인지 여부는 작성 방법에 대한 질문입니다. 바이트가 다소 이상한 순서 (가능성은 낮지 만 프로토콜이 16 비트 날짜로 거슬러 올라갈 수있는 경우)에 있다면 훨씬 더 많은 것이 필요합니다.