如何使用Golang移位十六进制值?

时间:2019-06-03 19:30:32

标签: go hex bit-manipulation

假设我有一个值为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,以便可以转换它?

1 个答案:

答案 0 :(得分:0)

假设您输入的字符串有所不同,但最多为16个十六进制数字,则只需将其转换为64位(无符号)整数并进行数学运算即可。我还假设您的常量以 0x 为前缀(假设它是十六进制的(通过数字判断)。

desired_df

BTW hex 不是一种类型,而是一种显示整数的方式。