2015-04-08 58 views

回答

0

您可以使用copyToArray复制Seq的内容。

val myseq: Seq[Byte] = ??? 
val myarray = new Array[Byte](myseq.size) 
myseq.copyToArray(myarray) 

注意,这将通过序列重复两次,这可能是不可取的,不可能的,还是蛮好的,这取决于您的使用。

4

不会

val a: Seq[Byte] = List() 
a.toArray 

做的工作?

0

一个明智的选择:

val byteSeq: Seq[Byte] = ??? 
val byteArray: Array[Byte] = bSeq.toArray 
val inputStream = java.io.ByteArrayInputStream(byteArray) 

一个不太明智的选择:

object HelloWorld { 

    implicit class ByteSequenceInputStream(val byteSeq: Seq[Byte]) extends java.io.InputStream { 
    private var pos = 0 
    val size = byteSeq.size 
    override def read(): Int = pos match { 
     case `size` => -1 // backticks match against the value in the variable 
     case _ => { 
      val result = byteSeq(pos).toInt 
      pos = pos + 1 
      result 
     } 
     } 
    } 

    val testByteSeq: Seq[Byte] = List(1, 2, 3, 4, 5).map(_.toByte) 
    def testConversion(in: java.io.InputStream): Unit = { 
    var done = false 
    while (! done) { 
     val result = in.read() 
     println(result) 
     done = result == -1 
    } 
    } 

    def main(args: Array[String]): Unit = { 
    testConversion(testByteSeq) 
    } 
} 
+0

明智的选择合作。谢谢 ! – Arpit

相关问题