在 Go 中将 Hex 转换为带符号的 Int

我想在 Go 中将十六进制字符串转换为带符号的整数值。我的输入值为“FF60”,我希望输出为“-160”。当我使用下面的函数时,结果是“65376”,代表无符号表示。

value, err := strconv.ParseInt("FF60", 16, 64)

使用 ParseUInt 函数时,我会期望 65376 的结果。任何帮助将非常感激。


白板的微信
浏览 234回答 1
1回答

慕的地8271018

第三个参数strconv.ParseInt()告诉你要解析的整数的位大小。0xff60解析为 64 位整数确实是65376.您实际上想将其解析为 16 位整数,因此16作为位大小传递。这样做你会得到一个错误:strconv.ParseInt:&nbsp;parsing&nbsp;"FF60":&nbsp;value&nbsp;out&nbsp;of&nbsp;range正确的是:0xFF60(which is&nbsp;65376) 超出了int16(valid&nbsp;int16range is&nbsp;[-32768..32767]) 的有效范围。因此,您可以使用 将其解析为无符号 16 位整数strconv.ParseUint(),然后将结果转换为带符号的 16 位整数:value,&nbsp;err&nbsp;:=&nbsp;strconv.ParseUint("FF60",&nbsp;16,&nbsp;16) fmt.Println(value,&nbsp;err) fmt.Println(int16(value))这将输出(在Go Playground上尝试):65376&nbsp;<nil> -160
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go