Golang 将十六进制转换为十进制
在本文中,我们将了解如何使用Golang程序将十六进制转换为十进制数。
十六进制数与十进制数
任何数字包含16个数字,它基于16进制,这意味着十六进制数包含从0到9的十进制数和额外的6个字母A−F。
在Go语言中,所有的十六进制数都以0x或0X开头。例如,0x16F是一个十六进制数。
十进制数是具有10为基数的数,这意味着一个数字的每个数字在其位置上都可以具有从0到具体取决于其位置的整数值。例如,23是一个十进制数。
示例1:使用内置函数将十六进制数转换为十进制的Go语言代码
语法
func ParseInt(s string, base int, bitSize int) (i int64, err error)
ParseInt()函数用于将一个数字从任何其他进制转换为整数。它接受三个参数,其中一个是我们希望将其转换为字符串的进制值,另一个是我们希望将其转换为的进制值,第三个是我们希望获得的结果的位数。
该函数返回一个无符号64位数字以及如果在转换过程中生成任何错误则返回一个错误消息。
步骤
- 步骤1 - 导入fmt、strconv和strings包。
-
步骤2 - 开始 main() 函数。
-
步骤3 - 将要转换为十进制的十六进制数初始化。
-
步骤4 - 将十六进制值通过 strconv.ParseInt() 函数传递。
-
步骤5 - 最后使用 fmt 包打印十进制整数。
示例
package main
//import the required packages
import (
"fmt"
"strconv"
)
// calling the main function
func main() {
// initialize the hexadecimal number
hexadecimal_num := "23a"
// use the parseInt() function to convert
decimal_num, err := strconv.ParseInt(hexadecimal_num, 16, 64)
// in case of any error
if err != nil {
panic(err)
}
// print the decimal number
fmt.Println("The decimal conversion of", hexadecimal_num, "is ", decimal_num)
// initialize the hexadecimal number
hexadecimal_num = "25f"
//use the parseInt() function to convert
decimal_num, err = strconv.ParseInt(hexadecimal_num, 16, 64)
//in case of any error
if err != nil {
panic(err)
}
// print the decimal number
fmt.Println("The decimal conversion of", hexadecimal_num, "is ", decimal_num)
//initialize the hexadecimal number
hexadecimal_num = "ffff"
// use the parseInt() function to convert hexadecimal to decimal
decimal_num, err = strconv.ParseInt(hexadecimal_num, 16, 64)
//in case of any error
if err != nil {
panic(err)
}
// print the decimal number
fmt.Println("The decimal conversion of", hexadecimal_num, "is", decimal_num)
}
输出
The decimal conversion of 23a is 570
The decimal conversion of 25f is 607
The decimal conversion of ffff is 65535
代码描述
-
首先,我们需要导入fmt包和strconv包。fmt包允许我们将任何东西打印到屏幕上,而strconv方法包含我们可以使用的函数,用于将十六进制数转换为十进制。
-
然后,我们需要初始化一个字符串来存储十六进制数。
-
在这个示例中,我们将使用 strconv.ParseInt() 函数。
-
将您希望转换的十六进制字符串作为第一个参数传递给函数,并将基值作为第二个参数传递给函数。
-
将结果存储在一个单独的变量中。在这个示例中,我们使用decimal_num变量来存储结果。
-
然后,我们可以使用 fmt.Println() 函数将结果打印到屏幕上。
-
使用不同的十六进制数并将十进制数打印到屏幕上。
示例2:使用ParseUnit()函数在Go语言程序中将十六进制数转换为十进制数
语法
func ParseUint(s string, base int, bitSize int) (uint64, error)
ParseUnit()函数用于将十六进制数转换为整数。它使用三个参数,一个是希望转换的十六进制字符串,另一个是我们希望将十六进制数转换为的基础值,第三个是我们希望获得结果的整数类型,如int。
函数将结果返回为一个无符号64位数,如果在转换过程中出现任何错误,则返回一个错误消息。
步骤
- 步骤 1 - 导入fmt、strconv和strings包。
-
步骤 2 - 开始main()函数。
-
步骤 3 - 初始化要转换为十进制的十六进制数。
-
步骤 4 - 将十六进制值作为参数传递给strconv.ParseUint()函数。
-
步骤 5 - 最后使用fmt包打印十进制整数。
示例
package main
//import the required packages
import (
"fmt"
"strconv"
"strings"
)
//function to get the hexadecimal number from string
func isDecimal(hexaString string) string {
// replace 0x or 0X with empty String
number := strings.Replace(hexaString, "0x", "", -1)
number = strings.Replace(number, "0X", "", -1)
// returns the hexadecimal number from a string
return number
}
func main() {
// initialize the string
var hexaDecimal_num string
hexaDecimal_num = "0x12F"
// calling the isDecimal_num() function
result := isDecimal(hexaDecimal_num)
// call ParseUint() function and pass the hexadecimal number as argument to it
output, err := strconv.ParseUint(result, 16, 64)
// in case of any error
if err != nil {
fmt.Println(err)
return
}
// printing the result on the screen
fmt.Println("The decimal conversion of", hexaDecimal_num, "is", output)
}
输出
The decimal conversion of 0x12F is 303
代码描述
-
首先,我们需要分别导入fmt、strconv和string包。
-
创建一个十六进制字符串函数,该函数将从十六进制数中删除0x部分,并返回剩余的部分。
-
开始 main() 函数。
-
初始化一个类型为string的变量,并将希望转换的十六进制数存储到该变量中。
-
调用 isDecimal_num() 函数并存储其结果。
-
将 isDecimal_num() 的输出作为 ParseUint() 函数的第一个参数。
-
分别将函数的输出存储到output和err变量中。
-
如果出现错误,则在屏幕上打印出错误。
-
使用 fmt.Println() 函数在屏幕上打印出十进制数。
结论
我们已成功编译并执行了一个Go语言程序,将十六进制数转换为十进制数。