2016-08-19 122 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,否则你会被截断的结果。

相关问题