Golang程序 将十六进制转换为十进制

在这篇文章中,我们将了解如何使用Golang程序将十六进制数字转换为十进制数字。

十六进制数字与十进制数字

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

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

十进制数字是以10为基数的数字,这意味着数字的每个数字可以有一个整数值,从0到取决于它的位置。例如,23是一个十进制数。

例1:使用IN-BUILD函数将十六进制数转换成十进制数的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 Lang程序

语法

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() 函数。

  • 初始化一个typr string的变量,并将你希望转换的十六进制数字存储到其中。

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

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

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

  • 如果出现错误,在屏幕上打印错误。

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

总结

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