【问题标题】:Parse Kafka.header to int in go lang在 go lang 中将 Kafka.header 解析为 int
【发布时间】:2022-12-19 11:32:36
【问题描述】:

我一直在尝试在 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

随时询问更多信息。 如果有任何建议,请帮助我。提前致谢。

【问题讨论】:

    标签: go apache-kafka confluent-kafka-go


    【解决方案1】:

    使用encoding/binary包读取二进制数据。例如:

    package main
    
    import (
        "encoding/binary"
        "fmt"
    
        "github.com/confluentinc/confluent-kafka-go/kafka"
    )
    
    func main() {
        headers := []kafka.Header{
            {
                Key:   "requestNum",
                Value: []byte("
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    相关资源
    最近更新 更多