在这篇博文中,你将学习两个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