gpt4 book ai didi

scala - 如何获取固定大小为 8 字节的 Long 值的 byteArray

转载 作者:行者123 更新时间:2023-12-02 03:22:38 27 4
gpt4 key购买 nike

我想获取固定8字节数组中“Long”的字节数组值

scala> Long.MaxValue
res191: Long = 9223372036854775807

scala> val i:Long = Long.MaxValue
i: Long = 9223372036854775807

scala> BigInt(i).toByteArray
res192: Array[Byte] = Array(127, -1, -1, -1, -1, -1, -1, -1)

scala> val i:Long = 100
i: Long = 100

scala> BigInt(i).toByteArray
res193: Array[Byte] = Array(100) // what I want is Array(0, 0, 0, 0, 0, 0, 0, 100)

scala>

我正在做的是

scala> var a:Array[Byte] =  Array(0, 0, 0, 0, 0, 0, 0, 0)
a: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 0)

scala> a.slice(0,8-BigInt(i).toByteArray.length) ++ BigInt(i).toByteArray
res200: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 100)

scala>

我不确定它是否可靠。有没有更好的方法来获取它?

最佳答案

几个选项:

val a = Array.fill[Byte](8)(0)

(a ++ BigInt(i).toByteArray).takeRight(8)

BigInt(i).toByteArray.reverse.padTo(8, 0).reverse

如果值超过 8 位,第二个方法的优点是稳健。

关于scala - 如何获取固定大小为 8 字节的 Long 值的 byteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com