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 語言程式,用於將十六進位制數轉換為十進位制數。