题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
package main import ( "fmt" "math" "bufio" "os" ) func culuate(s string) int { var sum int var idx int for i:=len(s)-1; i>=2; i-- { if '0' <= s[i] && s[i] <= '9' { sum += int(s[i] - '0') * int(math.Pow(float64(16), float64(idx))) } else if 'A' <= s[i] && s[i] <= 'Z' { sum += int(s[i] - 'A' + 10) * int(math.Pow(float64(16), float64(idx))) } idx++ } return sum } func main() { var s string inputReader := bufio.NewReader(os.Stdin) data, _, _ := inputReader.ReadLine() s = string(data) sum := culuate(s) fmt.Println(sum) }
// 由于输入的是一个字符串,所以依旧采用 inputReader.ReadLine() 的方式 题解中引入了 math 官方包,使用了 math.Pow() 方法