将长整型转换为字节数组的Scala方法

4

我想将Long类型转换为字节数组。下面的代码块可以实现,但是这是Java解决方案。我正在寻找一种Scala的好方法。如何以Scala的方式将Long类型转换为字节数组?

val arrayByteFromLong: Array[Byte] = ByteBuffer.allocate(8).putLong(myLong).array()

2
这对于Scala来说也完全没问题(我更喜欢它胜过Federico的回答)。唯一的例外是,如果你在寻找适用于Scala.js / Scala Native的代码。 - Alexey Romanov
1个回答

5
你可以利用scala.math.BigInt
import scala.math.BigInt

val arrayByteFromLong: Array[Byte] = BigInt(myLong).toByteArray

如果你想将数组填充到8个字节,可以使用以下方法(快速但不够高效):
arrayByteFromLong.reverse.padTo(8,0).reverse

2
通过 BigInt(arrayByteFromLong).toLong 返回非常简单。 - Techmag
请注意,BigInt.toByteArray和ByteBuffer具有不同的填充规则:BigInt(-4227595774L).toByteArray => Array(-1, 4, 4, 2, 2)ByteBuffer.allocate(8).putLong(-4227595774L).array() => Array[Byte] = Array(-1, -1, -1, -1, 4, 4, 2, 2) - maizy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接