亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將字符串轉換為 uint16

將字符串轉換為 uint16

Go
桃花長相依 2023-06-19 17:06:03
我是新來的,我一直在嘗試將字符串“0x0000”轉換為十六進制,但到目前為止還沒有成功。這是我嘗試過的:import "strconv"c, err := strconv.ParseUint("0x0000", 16, 32)if err != nil {    return err, nil}拋出錯誤:strconv.ParseUint: parsing "0x0000": invalid syntax。我也嘗試過uint16("0x0000"),但顯然我也無法將字符串直接轉換為uint16. 我敢肯定這是非常微不足道的,所以任何幫助將不勝感激。謝謝。
查看完整描述

2 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

行為strconv.ParseUint()詳見strconv.ParseInt()

如果 base == 0,則基數由字符串的前綴隱含:基數 16 代表“0x”,基數 8 代表“0”,否則基數 10。對于基數 1、低于 0 或高于 36,將返回錯誤。

所以只需使用base = 0, 然后0x前綴就會被正確解釋。

例如:

c, err := strconv.ParseUint("0x0000", 0, 16)

fmt.Println(c, err)


c, err = strconv.ParseUint("0x0100", 0, 16)

fmt.Println(c, err)

輸出(在Go Playground上嘗試):

0?<nil>
256?<nil>

另一種選擇是使用fmt.Sscanf()

var?c?uint16
_,?err?:=?fmt.Sscanf("0x0000",?"0x%04x",?&c)
fmt.Println(c,?err)

_,?err?=?fmt.Sscanf("0x0100",?"0x%04x",?&c)
fmt.Println(c,?err)

輸出是一樣的。在Go Playground上嘗試一下。

查看完整回答
反對 回復 2023-06-19
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

首先,您正在做的是轉換,而不是類型轉換。Go 根本不支持類型轉換,即使支持,這也不是任何語言中類型轉換的例子。

但是對于您的實際問題,您有兩種選擇:

  1. 刪除“0x”前綴:

    c,?err?:=?strconv.ParseUint("0000",?16,?32)
  2. 讓 strconv 檢測帶有前綴的堿基,如記錄的那樣:

    如果 base == 0,則基數由字符串的前綴隱含:基數 16 代表“0x”,基數 8 代表“0”,否則基數 10。對于基數 1、低于 0 或高于 36,將返回錯誤。

    c,?err?:=?strconv.ParseUint("0x0000",?0,?32)

最后,如果您的目標是轉換為 a?uint16,您可能應該通過請求適當的位大小來告訴 ParseUint:

c,?err?:=?strconv.ParseUint("0x0000",?0,?16)


查看完整回答
反對 回復 2023-06-19
  • 2 回答
  • 0 關注
  • 285 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號