我一直在尝试在 Go 中将 []kafka.Header 转换为 int。到目前为止,我已经尝试了很多方法。其中一些是:将字节数组转换为字符串,然后再转换为 int -string(header.Value)将第一个字节转换为字符串,然后转换为 int -string(header.Value[0])将第一个字节转换为 int -int(header.Value[0])使用 strconv 将字节数组转换为 int -strconv.Atoi(string(header.Value))使用 10 进制和 16 进制解析的自定义函数但是到目前为止,所有的方法要么导致了错误,要么导致了不正确的转换。错误消息的快照:错误:strconv.Atoi:解析“\x01\x00\x00\x00”:语法无效编码/十六进制:无效字节:U+0001输入是这样的(ASCII 中的单个十六进制字节)-headers: [requestNum="\x01\x00\x00\x00" retryNum="\x1c\x00\x00\x00" retryDelaySecs="@\x01\x00\x00"]预期输出是它们的 int 等价物,即 1、28、320随时询问更多信息。如果有任何建议,请帮助我。提前致谢。
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
使用encoding/binary包读取二进制数据。例如:
package main
import (
"encoding/binary"
"fmt"
"github.com/confluentinc/confluent-kafka-go/kafka"
)
func main() {
headers := []kafka.Header{
{
Key: "requestNum",
Value: []byte("\x01\x00\x00\x00"),
},
{
Key: "retryNum",
Value: []byte("\x1c\x00\x00\x00"),
},
{
Key: "retryDelaySecs",
Value: []byte("@\x01\x00\x00"),
},
}
for _, h := range headers {
v := binary.LittleEndian.Uint32(h.Value)
fmt.Printf("%s: %d\n", h.Key, v)
}
}
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消