首页 > 试题广场 >

进制转换

[编程题]进制转换
  • 热度指数:896266 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在

输入描述:

输入一个十六进制的数值字符串。



输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入

0xAA

输出

170
go代码:

package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
)

func main() {
    num := 0
	mappings := make(map[byte]int)
	mappings['A'] = 10
	mappings['B'] = 11
	mappings['C'] = 12
	mappings['D'] = 13
	mappings['E'] = 14
	mappings['F'] = 15
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		s := scanner.Text()
		// 检测输入参数
		if len(s) <= 2 {
			continue
		}
		for i := range s[2:] {
			// 逆序遍历
			c := s[len(s)-i-1]
			// 进制转化:16^i * c
			if c >= '0' && c <= '9' {
				num += int(math.Pow(16, float64(i))) * (int(c) - int('0'))
			} else if c >= 'A' && c <= 'F' {
				num += int(math.Pow(16, float64(i))) * mappings[byte(c)]
			} else {
                // 非法字符处理
				continue
			}
		}
		fmt.Println(num)
	}
}


发表于 2023-08-23 10:55:01 回复(0)
Go直接提交题目模版就行了,6
发表于 2023-04-13 19:00:38 回复(0)
package main

import (
    "fmt"
    "bufio"
    "os"
    "math"
)

func main() {
    str := ""
    scanner := bufio.NewScanner(os.Stdin)
    scanner.Scan()
    str = scanner.Text()
    str = str[2:]

    res := 0
    n := 0

    for i:=len(str)-1; i>=0; i--{
        val := str[i]
        val1 := int(math.Pow(16, float64(n)))
        res = res + change[rune(val)]*val1
        n ++
    }
    

    fmt.Println(res)


}

var change = map[rune]int{'1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}
ff关键在于字符串、字符、数组、转换,其实用go刷题还是很费事的。
发表于 2023-02-07 18:24:37 回复(0)
package main
import (
    "fmt"
    "bufio"
    "os"
    "strconv"
)

func main() {
    input := bufio.NewScanner(os.Stdin)
    input.Scan()
    s := input.Text()
    val := s[2:]
    n, err := strconv.ParseUint(val, 16, 32)
    if err != nil {
        panic(err)
    }
    fmt.Println(n)
}

发表于 2022-08-26 14:40:59 回复(0)

。。。

package main

import (
    "fmt"
)

func main() {
//    input := bufio.NewScanner(os.Stdin)
//     for input.Scan() {
//         i, _ := strconv.ParseInt(input.Text(), 0, 64)
//         fmt.Println(i)
//     }
    var n int 
    fmt.Scanf("%v", &n)
    fmt.Println(n)
}
发表于 2022-08-09 01:33:40 回复(1)
直接接收为int,自动转10进制,然后输出就完事了,简直无语。。。
package main

import "fmt"

func main() {
    var a int
	fmt.Scan(&a)
	fmt.Println(a)
}



发表于 2022-07-12 17:51:30 回复(0)
package main
 
import(
    "fmt"
    "strings"
)
 
func main() {
    for {
        var s string
        if _, err := fmt.Scan(&s); err != nil {
            return
        }
        fmt.Println(hexExchange(s))
    }
}

func hexExchange(str string) int {
    str = strings.ToUpper(str)
    str = str[2:]
    total := 0
    var charInt int
    for i, index := len(str), 0; i > 0; i, index = i-1, index+1{
        charInt = int(assicToInt(str[i-1]))
        total += charInt << (uint)(4*index)
    }
    return total
}
 
func assicToInt(num uint8) uint8 {
    if num > 57{
        return num - 55
    }
    return num - 48
}
发表于 2022-06-09 10:15:18 回复(0)
package main
import (
    "fmt"
)
func main() {
  a := 0
  b := 0
  for {
        n, _ := fmt.Scan(&a,&b)
        if n == 0 {
            break
        } else {
            fmt.Printf("%d\n", a)
            fmt.Printf("%d\n", b)
        }
  }
}
惊呆了,这样子也能通过。
发表于 2022-02-24 22:49:22 回复(0)
package main

import (
    "fmt"
    "os"
    "bufio"
    "strconv"
)

func main(){
    input := bufio.NewScanner(os.Stdin)
    for input.Scan(){
        v, _ := strconv.ParseInt(input.Text(), 0, 64)
        fmt.Println(v)
    }
}

发表于 2021-10-20 18:14:23 回复(0)
package main

import (
    "errors"
    "fmt"
    "strconv"
    "strings"
    "bufio"
    "os"
)

/*
    将16进制字符串转换为10进制字符串
 */
func StrToInt10(str string) (string, error){
    // 根据0x分隔, 并取后面数值部分
    strS := strings.FieldsFunc(str, func(r rune) bool {
        return r == 'x' || r == 'X'
    })[1]
    strS = strings.ToUpper(strS)

    if strInt, err := strconv.ParseInt(strS, 16, 32); err == nil{
        return strconv.Itoa(int(strInt)), nil
    }else{
        return "", errors.New("parse error")
    }
}

func HJStrScan() []string{
    var scanner = bufio.NewScanner(os.Stdin)
    var inputS []string

    // 获取输入
    for {
        scanner.Scan()
        input := scanner.Text()
        if input == ""{
            break
        }
        inputS = append(inputS, input)
    }
    return inputS
}

func main(){
    var inputS = HJStrScan()

    for _, input := range inputS{
        strNum, err := StrToInt10(input)
        if err != nil{
            panic(err)
        }
        fmt.Printf("%s\n", strNum)
    }
}
发表于 2021-10-03 12:04:04 回复(0)

问题信息

难度:
10条回答 161589浏览

热门推荐

通过挑战的用户

查看代码