美文网首页
go语言实现输入一个16进制数,输出10进制数算法

go语言实现输入一个16进制数,输出10进制数算法

作者: 苍老师的眼泪 | 来源:发表于2020-04-30 03:13 被阅读0次
package main

import (
    "bufio"
    
    "os"
)

func getValue(r rune) uint64 {
    switch r {
    case '0':
        return 0
    case '1':
        return 1
    case '2':
        return 2
    case '3':
        return 3
    case '4':
        return 4
    case '5':
        return 5
    case '6':
        return 6
    case '7':
        return 7
    case '8':
        return 8
    case '9':
        return 9
    case 'a':
        return 10
    case 'A':
        return 10
    case 'b':
        return 11
    case 'B':
        return 11
    case 'c':
        return 12
    case 'C':
        return 12
    case 'd':
        return 13
    case 'e':
        return 14
    case 'f':
        return 15
    case 'D':
        return 13
    case 'E':
        return 14
    case 'F':
        return 15
    }
    return 0
}

func reverse(s []uint64) {
    for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
        s[i], s[j] = s[j], s[i]
    }
}

func main() {
    
    reader := bufio.NewReader(os.Stdin)
    
    str, _ := reader.ReadString('\n')
    
    runeslice := []rune(str)

    runeslice = runeslice[2:]
    runeslice = runeslice[:len(runeslice) - 2]


    
    var uintSlice []uint64

    for _, v := range runeslice {
        uintSlice = append(uintSlice, getValue(v))
    }
    reverse(uintSlice)



    
    var result uint64

    for i := 0; i < len(uintSlice); i++ {
        result += uintSlice[i] * pow16(i)

    }


    print(result)


}

func pow16(n int) uint64 {
    var result uint64
    result = 1


    for i := 0; i < n; i++ {
        result *= 16
    }
    return result
}

相关文章

网友评论

      本文标题:go语言实现输入一个16进制数,输出10进制数算法

      本文链接:https://www.haomeiwen.com/subject/tsrawhtx.html