Golang中如何将十进制转换为十六进制

Golang中如何将十进制转换为十六进制 大家好, 我需要使用GO将十进制值转换为十六进制值。是否有现成的方法可以实现这种转换?

谢谢

4 回复

感谢马蒂亚斯。

更多关于Golang中如何将十进制转换为十六进制的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用 strconv

var n int64 = 1500
hex := strconv.FormatInt(n, 16)
fmt.Println(hex) 

使用 fmt,如果你需要字符串:

var n int64 = 1500
hex := fmt.Sprintf("%x", n)
fmt.Println(hex)

我假设您获得一个表示十进制数的字符串作为输入,并希望返回一个表示相同数字但为十六进制格式的字符串。

您可以使用 strconv 包。您的输入 base10,输出 base16

当然,您也可以自己实现一个直接的转换。但由于这是家庭作业中非常常见的任务,我将把这些实现留给您。如果您需要自己实现,您需要展示您的实现,我们会帮助您正确完成。

在Go语言中,可以使用标准库中的strconv包来轻松实现十进制到十六进制的转换。具体来说,FormatInt函数可以将一个整数转换为指定进制的字符串表示,其中十六进制对应基数16。

以下是一个示例代码,展示如何将十进制整数转换为十六进制字符串:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    decimalValue := 255
    // 使用strconv.FormatInt进行转换,基数设置为16
    hexString := strconv.FormatInt(int64(decimalValue), 16)
    fmt.Printf("十进制 %d 转换为十六进制: %s\n", decimalValue, hexString)
}

输出结果:

十进制 255 转换为十六进制: ff

如果处理的是无符号整数,可以使用FormatUint函数:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    decimalValue := uint(255)
    hexString := strconv.FormatUint(uint64(decimalValue), 16)
    fmt.Printf("十进制 %d 转换为十六进制: %s\n", decimalValue, hexString)
}

输出结果相同:

十进制 255 转换为十六进制: ff

对于负整数,转换会直接处理其二进制补码形式:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    decimalValue := -255
    hexString := strconv.FormatInt(int64(decimalValue), 16)
    fmt.Printf("十进制 %d 转换为十六进制: %s\n", decimalValue, hexString)
}

输出结果:

十进制 -255 转换为十六进制: -ff

这些方法都直接利用了Go标准库,无需额外依赖。

回到顶部