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)
}