登录
首页 >  Golang >  Go问答

使用 Golang 对十六进制数进行位移操作

来源:stackoverflow

时间:2024-03-04 11:33:24 124浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《使用 Golang 对十六进制数进行位移操作》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

假设我有一个值为 4addf6c259ebaff8 的字符串。

使用这个我想获得一个时间戳,使用公式 (hex(val) >> 25) + 1008000400

使用 encoding/hex 包,我得出以下结论:

srcBytes := []byte(src)
dst := make([]byte, hex.EncodedLen(len(srcBytes)))
hex.Encode(dst, srcBytes)

在此之后,我需要一种方法将 dst 位移 25 次,然后向其添加一个常量。

但是 dst 的类型为 []byte

我需要它的类型为 hex ,这样我就可以在之后进行位移。如何转换 []byte 以便可以移位?


解决方案


假设您的输入字符串有所不同,但最多有 16 个十六进制数字,您只需转换为 64 位(无符号)整数并进行数学计算。我还为您的常量添加了前缀 0x 假设它是十六进制(根据数字判断)。

s := "4ADDF6C259EBAFF8"
  if i, err := strconv.ParseUint(s, 16, 64); err == nil {
    fmt.Printf("%x\n", i >> 25 + 0x1008000400)
  }

顺便说一句,hex不是一种类型,而是一种显示整数的方式。

终于介绍完啦!小伙伴们,这篇关于《使用 Golang 对十六进制数进行位移操作》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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