题解 | #进制转换#

进制转换

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
}

全部评论

相关推荐

挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务