Coverage Summary for Class: Hex (dev.suresh.util)

Class Class, % Method, % Branch, % Line, % Instruction, %
Hex 0% (0/1) 0% (0/10) 0% (0/26) 0% (0/51) 0% (0/327)


 package dev.suresh.util
 
 /**
  * This is the direct port from one-nio library
  * [https://github.com/odnoklassniki/one-nio/tree/master/src/one/nio/util]
  */
 object Hex {
 
   private val SMALL = "0123456789abcdef".toCharArray()
   private val CAPITAL = "0123456789ABCDEF".toCharArray()
   private val DIGIT_VALUE = IntArray(256)
 
   init {
     DIGIT_VALUE.fill(-1)
     (0..9).forEach { DIGIT_VALUE['0'.code + it] = it }
     (10..15).forEach {
       DIGIT_VALUE['A'.code + it - 10] = it
       DIGIT_VALUE['a'.code + it - 10] = it
     }
   }
 
   fun toHex(input: ByteArray, digits: CharArray = SMALL): String {
     val result = CharArray(input.size * 2)
     input.forEachIndexed { i, b ->
       result[i * 2] = digits[b.toInt() and 0xff ushr 4]
       result[i * 2 + 1] = digits[b.toInt() and 0x0f]
     }
     return result.concatToString()
   }
 
   fun toHex(n: Int, digits: CharArray = SMALL): String {
     val result = CharArray(8)
     var j = n
     for (i in 7 downTo 0) {
       j = j ushr 4
       result[i] = digits[j and 0x0f]
     }
     return result.concatToString()
   }
 
   fun toHex(n: Long, digits: CharArray = SMALL): String {
     val result = CharArray(16)
     var l = n
     for (i in 15 downTo 0) {
       l = l ushr 4
       result[i] = digits[l.toInt() and 0x0f]
     }
     return result.concatToString()
   }
 
   fun parseBytes(input: String): ByteArray {
     val length = input.length
     val result = ByteArray(length / 2)
     for (i in 0 until length step 2) {
       result[i ushr 1] =
           (DIGIT_VALUE[input[i].code] shl 4 or DIGIT_VALUE[input[i + 1].code]).toByte()
     }
     return result
   }
 
   fun parseInt(input: String): Int {
     val length = input.length
     var result = 0
     for (i in 0 until length) {
       val digit = DIGIT_VALUE[input[i].code]
       require(digit >= 0)
       result = result shl 4 or digit
     }
     return result
   }
 
   fun parseLong(input: String): Long {
     val length = input.length
     var result: Long = 0
     for (i in 0 until length) {
       val digit = DIGIT_VALUE[input[i].code]
       require(digit >= 0)
       result = result shl 4 or digit.toLong()
     }
     return result
   }
 }