2016-08-19 3 views

답변

2

Scala/Java Short의 상위 및 하위 바이트를 추출하기 위해 이동 및 마스킹과 같은 비트 연산을 고려하십시오 (C/C++에서와 매우 유사한 방식으로). 하자

val xs = (253 to 257).map(_.toShort).toList 
xs: List[Short] = List(253, 254, 255, 256, 257) 

그래서 각 튜플 각각 Short 값의 상부 및 하부 바이트를 수집

def upper(x: Short) = ((x >> 8) & 0xFF).toByte 
upper: (x: Short)Byte 

def lower(x: Short) = (x & 0xFF).toByte 
lower: (x: Short)Byte 

xs.map(x => (upper(x), lower(x))).toArray 
res2: Array[(Byte, Byte)] = List((0,-3), (0,-2), (0,-1), (1,0), (1,1)) 

. 이 스칼라에서 할 매우 쉽게

xs.flatMap(x => Array(upper(x), lower(x))).toArray 
res3: Array[Byte] = Array(0, -3, 0, -2, 0, -1, 1, 0, 1, 1) 
0

위의 튜플의 배열을 병합에 한 가지 방법은, 사실, 당신은 거의 그대로 코드로 귀하의 질문에 영어 문장을 번역 할 수 있습니다. 당신이 List[Short]l라는이 가정 :

l.map(_.toByte).toArray 

는 물론, 당신은 목록에있는 모든 Short의 실제로 Byte에 맞게 있는지 확인해야합니다, 그렇지 않으면 당신은 잘린 결과를 얻을 수 있습니다.