慕田峪7331174
2023-03-15 14:56:37
我一直在嘗試在 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 關注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消
