登录
首页 >  Golang >  Go问答

将有符号的整数从 Hex 转换为 Int 在 Go 中实现

来源:stackoverflow

时间:2024-02-08 14:39:20 356浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《将有符号的整数从 Hex 转换为 Int 在 Go 中实现》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

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

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

使用 parseuint 函数时,我预计会得到 65376 的结果。 任何帮助将不胜感激。


正确答案


第三个参数strconv.ParseInt()告诉你要解析的整数的位大小。 0xff60 解析为 64 位整数确实是 65376

您实际上想将其解析为 16 位整数,因此将 16 作为位大小传递。这样做你会得到一个错误:

strconv.parseint: parsing "ff60": value out of range

以下说法正确:0xff60(即 65376)超出 int16 的有效范围(有效 int16 范围为 [-32768..32767])。

因此,您可以使用 strconv.ParseUint() 将其解析为无符号 16 位整数,然后将结果转换为有符号 16 位整数:

value, err := strconv.parseuint("ff60", 16, 16)
fmt.println(value, err)
fmt.println(int16(value))

这将输出(在 Go Playground 上尝试):

65376 
-160

今天关于《将有符号的整数从 Hex 转换为 Int 在 Go 中实现》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>