Scala - 将Seq [Int]转换为包含Seq中数字的单个数字

Sid*_*Sid 2 functional-programming scala seq

在Scala中,如何将Seq [Int]转换为由Seq中的数字组成的单个数字.

例如

Seq(2,3,45,10)234510为数字

一种简单的方法是

Seq(2,3,45,10).mkString.toLong

是否有更好的,可能更高性能/功能的方式?

Odo*_*ois 5

Seq(2,3,45,10).reduce((x,y) =>  x * math.pow(10,math.floor(math.log10(y)) + 1).toInt + y)
Run Code Online (Sandbox Code Playgroud)

要么

Seq(2,3,45,10).map(BigDecimal(_)).reduce((x,y) =>  x * BigDecimal(10).pow(y.precision) + y)
Run Code Online (Sandbox Code Playgroud)

但实际上我认为这_.mkString.toLong是最有效的,唯一的问题是它只适用于十进制表示.对于任意基数,你可以做

BigInt(Seq(0x2,0x3,0x45,0x10).map(BigInt(_).toString(16)).mkString, 16)
Run Code Online (Sandbox Code Playgroud)