3 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個贊
使用strconv.ParseUint(文檔)。
var s = "05f8"
var base = 16
var size = 16
value, err := strconv.ParseUint(s, base, size)
value2 := uint16(value) // done!
請注意,輸出值是 an uint64,您必須在使用它之前將其轉(zhuǎn)換為您鍵入的內(nèi)容。
注意 (bis) size 參數(shù)控制要轉(zhuǎn)換為的 uint 的最大大小,因此溢出檢查正確完成。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊
如果您有興趣將 astring變成[]uint16,您可以執(zhí)行以下操作:
package main
import (
"fmt"
"golang.org/x/sys/windows"
)
func main() {
a, e := windows.UTF16FromString("05f8")
if e != nil {
panic(e)
}
fmt.Printf("%q\n", a) // ['0' '5' 'f' '8' '\x00']
}
或者,如果您確定不string包含 NUL 字節(jié),則可以執(zhí)行以下操作:
package main
import (
"fmt"
"golang.org/x/sys/windows"
)
func main() {
a := windows.StringToUTF16("05f8")
fmt.Printf("%q\n", a) // ['0' '5' 'f' '8' '\x00']
}
https://pkg.go.dev/golang.org/x/sys/windows#StringToUTF16
https://pkg.go.dev/golang.org/x/sys/windows#UTF16FromString

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個贊
我絕不聲稱自己是 Go 開發(fā)人員,我歡迎對此提供反饋,但我試圖將端口的 env 變量從字符串轉(zhuǎn)換為 uint16。我能夠讓它與:
文件: main.go
package main
import (
"log"
"os"
"strconv"
)
var PORT = os.Getenv("PORT")
func main() {
portAsInt, err := strconv.ParseInt(PORT, 0, 16)
if (err != nil) {
log.Fatal(err)
}
// Use as needed with uint16()
log.Println("Listening on port:", uint16(portAsInt))
}
運(yùn)行應(yīng)用程序:
PORT=3000 go run main.go;
# Expected Output:
# Listening on port: 3000
- 3 回答
- 0 關(guān)注
- 1266 瀏覽
添加回答
舉報(bào)