题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
package main
import (
"bufio"
"errors"
"fmt"
"math"
"os"
"strings"
)
func main() {
r := bufio.NewReader(os.Stdin)
b, _, err := r.ReadLine()
if err != nil {
return
}
d, _ := ParseX(string(b))
fmt.Println(d)
}
func ParseX(s string) (int32, error) {
if len(s) < 3 {
return 0, errors.New("the len mush bigger than 2")
}
s = strings.ToUpper(s[2:])
m := make(map[byte]int32)
for i, v := range "0123456789ABCDEF" {
m[byte(v)] = int32(i)
}
var d int32
var count int
for i := len(s) - 1; i >= 0; i-- {
d += m[s[i]] * int32(math.Pow(16, float64(count)))
count++
}
return d, nil
}

查看30道真题和解析