Conversion Decimal a Hexadecimal

en verdad hay una forma mas sencilla de hacerlo en golang ya que el paquete “strconv” lo trae.  Aqui dejo el link 

Yo lo he hecho una manera diferente practicando algunos conceptos como slices, invertir slice, convertir un int slice a string slice. etc. A lo mejor para entender algunos conceptos y ir entrenando no es mala idea 😉



package main

import (
    "fmt"
    "strconv"
    "strings"
)

// invert slide
func sorting(a []int) []int {
    for i, j := 0, len(a)-1;
    i < j;
    i, j = i+1, j-1 {
        a[i], a[j] = a[j], a[i] //reverse the slice
    }
    return a
}

func main() {

    var input, rest int
    intSlice := []int {}
                start:
                fmt.Println("\n***********************************")
                fmt.Print("\nPlease typ a Decimal number   :   ")
                fmt.Scanf("%d", &input)

                // check if input higher then 2 high 63 s
    if input > 9223372036854775806 {
    fmt.Println("Typed Number is to high please type a Integer under 9.223.372.036.854.775.806 ")
        goto start
    }
    //save a copy of input in other variable
    firstInput := input

    for input > 0 {
    rest = input % 16
    intSlice = append(intSlice, rest)
        input = input / 16
    }
    // inverting Integer Slice
    sorting(intSlice)

    //convertimng intiger slice to string slice
    stringSlice := []string {}
    for i := range intSlice {
    decimal := intSlice[i]
        hexa := strconv.Itoa(decimal)

        if hexa == "10" {
        hexa = "A"
    }
    if hexa == "11" {
        hexa = "B"
    }
    if hexa == "12" {
        hexa = "C"
    }
    if hexa == "13" {
        hexa = "D"
    }
    if hexa == "14" {
        hexa = "E"
    }
    if hexa == "15" {
        hexa = "F"
    }

    stringSlice = append(stringSlice, hexa)
    }
    result := strings.Join(stringSlice, "  ")

              fmt.Println(firstInput, "in HEXADECIMAL : ", result)

}