Go语言如何处理hex字符串与位运算,实现类似JS的Buffer操作
解决方案
Go标准库encoding/hex包可以实现和JS Buffer完全等效的能力:先将十六进制字符串解码为字节切片([]byte),之后就可以直接通过位运算提取指定位置的数据,逻辑和JS版本完全对齐。
实现代码如下:
package main import ( "encoding/hex" "fmt" ) func main() { hexStr := "5FEE012503591FC70CC8" // 等效于JS的Buffer.from(hex, "hex"),将hex字符串解码为字节数组 bytes, err := hex.DecodeString(hexStr) if err != nil { panic(err) } // 和JS写法逻辑一致,显式转uint16避免uint8移位溢出 battery := (uint16(bytes[8]) << 8) | uint16(bytes[9]) fmt.Println("Battery: ", battery) }
该方案比你当前截取子串转十六进制的实现更适合多字段提取场景,仅需一次解码就可以提取所有固定位置的业务数据,维护成本更低,性能也更好。
内容的提问来源于stack exchange,提问作者Barty
相关产品推荐
相关产品推荐

