Golang 示例 - 将八进制数转换为十进制数/十进制转换为八进制教程及实例

439 阅读2分钟

在这篇博文中,你将学习两个Go语言的程序

第一个程序是将八进制数转换为十进制数

第二个程序是将十进制数转换为八进制数。

八进制数是基于基数8的数字系统。在Golang中,八进制数总是以0为前缀,例如八进制数是0879。十进制数是包含以10为基数的数字。

将八进制数转换成十进制数的程序示例

在Go语言中,我们有两种方法将八进制数转换为十进制数。以下是这些方法。

  • 使用strconv ParseInt函数
  • 使用没有内置函数的for循环自定义函数

下面的程序将八进制数(前缀为0或用于声明八进制数的正常数字)存储在变量octal中。

strconv ParseInt函数示例,将八进制数转换为十进制数

strconv软件包提供了ParseInt函数。为了转换八进制数,ParseInt提供了数字和base=8。
下面是一个转换为十进制数的示例程序

package main  
  
import (  
 "fmt"  
 "strconv"  
)  
  
func main() {  
 var octal string  
 fmt.Print("Enter Octal Number:")  
 fmt.Scanln(&octal)  
 output, err := strconv.ParseInt(octal, 8, 64)  
 if err != nil {  
  fmt.Println(err)  
  return  
 }  
  
 fmt.Printf("Output %d", output)  
}  

当上述程序被编译后,输出为

Enter Octal Number:045  
Output 37  

没有预定义函数的自定义函数

创建了一个用户定义的函数,在一个自定义函数内,用于与模数、除数运算符和Math pow函数的循环。
下面是一个示例程序

package main  
  
import (  
 "fmt"  
 "math"  
)  
  
func convertOctaToDecimal(number int) int {  
 decimal := 0  
 counter := 0.0  
 remainder := 0  
  
 for number != 0 {  
  remainder = number % 10  
  decimal += remainder * int(math.Pow(8.0, counter))  
  number = number / 10  
  counter++  
 }  
 return decimal  
}  
  
func main() {  
 var octal int  
 fmt.Print("Enter Octal Number:")  
 fmt.Scanln(&octal)  
  
 fmt.Printf("Output %d", convertOctaToDecimal(octal))  
  
}  

输出是

Enter Octal Number:25  
Output 21  

将十进制数转换为八进制数的示例程序

在Golang中,我们有两种方法将十进制数转换为八进制数。
以下是两种方法

  • 使用strconv FormatInt函数
  • 没有内置的函数

下面的程序从键盘控制台获取十进制的输入数字,并将其存储在变量十进制中。

strconv FormatInt函数转换十进制到八进制的例子

strconv内置的标准包提供了FormatInt函数,用于将十进制数字转换为八进制数字。
下面是一个将十进制转换为八进制的示例程序

package main  
  
import (  
 "fmt"  
 "math"  
 "strconv"  
)  
func main() {  
 var decimal int64  
 fmt.Print("Enter Decimal Number:")  
 fmt.Scanln(&decimal)  
 output := strconv.FormatInt(decimal, 8)  
 fmt.Print("Output ", output)  
  
}  

编译后的程序输出为

Enter Decimal Number:124  
Output 174  

没有内置功能的自定义函数

下面的程序使用了Golang的功能For loop,Modulus和除法运算符。
下面是一个做转换的例子程序。

package main  
  
import (  
 "fmt"  
)  
  
func convertDecimalToOctal(number int) int {  
 octal := 0  
 counter := 1  
 remainder := 0  
 for number != 0 {  
  remainder = number % 8  
  number = number / 8  
  octal += remainder * counter  
  counter *= 10  
 }  
 return octal  
}  
  
func main() {  
 var decimal int  
 fmt.Print("Enter Decimal Number:")  
 fmt.Scanln(&decimal)  
 fmt.Print("Output ", convertDecimalToOctal(decimal))  
  
}  

输出是

Enter Decimal Number:145  
Output 221