题解 | #进制转换#
进制转换
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 }