题解 | #进制转换#

进制转换

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
}

全部评论

相关推荐

07-23 14:04
东北大学 C++
既然这样,为什么不点击就送呢
牛马88号:因为你合适。但有很多笔试就挂了、通过了再排序的
点赞 评论 收藏
分享
求offer的大角牛:简历写的第一乱,没有突出重点,第二项目太多太杂看不出来有啥核心技术,第三自我评价太多了,第四获得的荣誉没啥含金量,可以不写,反正问题不少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务