Scala.js中如何将ArrayBuffer转换为Array[Byte]?
ArrayBuffer 转 Scala Array[Byte](Scala.js)
在Scala.js中,要把DOM API返回的ArrayBuffer转换为Scala的Array[Byte],可以通过TypedArray接口实现,以下是两种常用方案:
方案一:处理无符号字节数据
如果你的ArrayBuffer存储的是0-255范围的无符号字节,用Uint8Array读取后转成Scala有符号Byte:
import scala.scalajs.js.typedarray.{ArrayBuffer, Uint8Array} def toScalaArray(input: ArrayBuffer): Array[Byte] = { val uint8Buffer = new Uint8Array(input) uint8Buffer.toArray.map(_.toByte) }
方案二:直接读取有符号字节数据
如果原始数据本身是-128到127范围的有符号字节,直接用Int8Array读取即可:
import scala.scalajs.js.typedarray.{ArrayBuffer, Int8Array} def toScalaArray(input: ArrayBuffer): Array[Byte] = { val int8Buffer = new Int8Array(input) int8Buffer.toArray }
关键说明
- JS的TypedArray(
Uint8Array/Int8Array)是访问ArrayBuffer底层字节数据的标准接口,Scala.js对其做了原生封装支持。 toArray方法会将JS TypedArray转换为Scala原生数组,配合类型转换即可得到目标Array[Byte]。
内容的提问来源于stack exchange,提问作者R A
相关产品推荐
相关产品推荐

