Scala не поддерживает целые числа без знака, но вы можете иметь обходной путь, подобный этому.
scala> val x = 2147483647
x: Int = 2147483647
scala> val y = x+4
y: Int = -2147483645
Здесь вы хотите, чтобы значение y равнялось 2147483651 вместо отрицательного значения, ограниченного типом Integer.
Чтобы получить положительное значение, вы можете использовать библиотеку BigInt. Получить последовательность байтов целочисленного значения и
добавьте перед ним другой «ноль», чтобы все значение стало положительным.
scala> import scala.math.BigInt
import scala.math.BigInt
scala> val prefix:Array[Byte]=Array(0)
prefix: Array[Byte] = Array(0)
scala> val y = BigInt(prefix ++ BigInt(x+4).toByteArray)
y: scala.math.BigInt = 2147483651
scala>
Вы можете обернуть его как функцию
scala> def unsignedInt(a:Integer):scala.math.BigInt=
| {
| val prefix:Array[Byte]=Array(0)
| BigInt(prefix ++ BigInt(a).toByteArray)
| }
unsignedInt: (a: Integer)scala.math.BigInt
scala> unsignedInt(x)+unsignedInt(4)
res31: scala.math.BigInt = 2147483651
scala>