2016-08-19 121 views

回答

2

考慮位移動和屏蔽等操作來提取Scala/Java的高位和低位字節(與C/C++非常相似);讓

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

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)) 

其中每個元組收集各Short值的上部和下部字節。 一種方法來整平以上的元組陣列,

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 S IN列表實際上放入一個Byte,否則你會被截斷的結果。

相關問題