我需要将int16的数据格式转换为表示其十六进制值的字符串。
我尝试了一些十六进制转换器,但它们更改数据而不是更改格式。我需要它是它的十六进制值的字符串表示形式。
data := (data from buffer)
fmt.Printf("BUFFER DATA : %X\n", data) // output print on screen D9DC (hex)
fmt.Println(("BUFFER DATA : ", string(data)) // output print on screen 55772 (dec)
fmt.Println(("BUFFER DATA : ", data) // output print on screen [?]
如何转换数据格式,使其以D9DC
打印fmt.Println
?
答案 0 :(得分:2)
由于fmt.Println
不接受格式标志,因此它将根据其类型打印每个变量。
crc16.Checksum
返回一个int16,因此fmt.Println
将显示十六进制字符串的整数值55772
。
如果您希望fmt.Println
打印D9DC
而不是整数值,则有多种选择。
String()
方法创建您自己的类型,该方法是整数,但在打印时以十六进制值表示。对于第二个选项,您的类型可能是这样的:
type Hex int16
func (h Hex) String() string {
return strconv.FormatInt(int64(h), 16)
}
fmt.Println
将自动使用此方法,因为这意味着Hex
类型实现了Stringer
接口。有关更多信息,请参见以下资源: