Go语言程序:将十六进制转换为十进制


本文将介绍如何使用 Go 语言程序将十六进制数转换为十进制数。

十六进制数与十进制数

任何包含 16 位数字的数字,都是基于 16 进制的,这意味着十六进制数包含从 0 到 9 的十进制数,以及额外的 6 个字母 A-F。

在 Go 语言中,所有十六进制数都以 0x 或 0X 开头。例如,0x16F 是一个十六进制数。

十进制数是以 10 为基数的数字,这意味着数字的每一位都可以具有从 0 到 9 的整数值,具体取决于其位置。例如,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:使用 ParseUint() 将十六进制转换为十进制的 Go 语言程序

语法

func ParseUint(s string, base int, bitSize int) (uint64, error)

ParseUint() 函数用于将十六进制数转换为整数。它使用三个参数:第一个是要转换的十六进制字符串,第二个是要将十六进制数转换到的基数,第三个是要获取结果的整数类型(如 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 包。

  • 创建一个 hexa 字符串函数,该函数将删除十六进制数中的 0x 部分,并返回剩余的数字。

  • 启动 main() 函数。

  • 初始化一个字符串类型的变量,并将要转换的十六进制数存储到其中。

  • 调用 isDecimal_num() 函数并存储其结果。

  • isDecimal_num() 的输出作为 ParseUint() 函数的第一个参数传递。

  • 将函数的输出分别存储在 output 和 err 变量中。

  • 如果发生错误,则在屏幕上打印错误。

  • 使用 fmt.Println() 函数在屏幕上打印十进制数。

结论

我们已经成功编译并执行了一个 Go 语言程序,用于将十六进制数转换为十进制数。

更新于: 2022-11-16

7K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.