def transform()

in s2core/src/main/scala/org/apache/s2graph/core/types/v1/InnerVal.scala [139:164]


  def transform(l: Long): (Byte, Array[Byte]) = {
    if (Byte.MinValue <= l && l <= Byte.MaxValue) {
      //        val value = if (l < 0) l - Byte.MinValue else l + Byte.MinValue
      val key = if (l >= 0) metaByte("byte") else -metaByte("byte")
      val value = if (l >= 0) Byte.MaxValue - l else Byte.MinValue - l - 1
      val valueBytes = Array.fill(1)(value.toByte)
      (key.toByte, valueBytes)
    } else if (Short.MinValue <= l && l <= Short.MaxValue) {
      val key = if (l >= 0) metaByte("short") else -metaByte("short")
      val value = if (l >= 0) Short.MaxValue - l else Short.MinValue - l - 1
      val valueBytes = Bytes.toBytes(value.toShort)
      (key.toByte, valueBytes)
    } else if (Int.MinValue <= l && l <= Int.MaxValue) {
      val key = if (l >= 0) metaByte("int") else -metaByte("int")
      val value = if (l >= 0) Int.MaxValue - l else Int.MinValue - l - 1
      val valueBytes = Bytes.toBytes(value.toInt)
      (key.toByte, valueBytes)
    } else if (Long.MinValue <= l && l <= Long.MaxValue) {
      val key = if (l >= 0) metaByte("long") else -metaByte("long")
      val value = if (l >= 0) Long.MaxValue - l else Long.MinValue - l - 1
      val valueBytes = Bytes.toBytes(value.toLong)
      (key.toByte, valueBytes)
    } else {
      throw new Exception(s"InnerVal range is out: $l")
    }
  }