簡體   English   中英

如何在Golang中將int16轉換為十六進制編碼的字符串

[英]How to convert int16 to hex-encoded string in Golang

我需要將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 [?]

我怎樣才能轉換數據格式,以便它打印D9DCfmt.Println

完整代碼在這里https://play.golang.org/p/WVpMb9lh1Rx

由於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接口。 有關更多信息,請參見以下資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM