gpt4 book ai didi

go - 无法从字节数组中删除 Null 终止符?

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:44 28 4
gpt4 key购买 nike

我正在使用 this library在 Go 中(在 OSX 上)与 Windows DNS 服务器交互。

运行以下代码片段时,出现有关空终止符的错误。

 $ ~/go/bin/winrm-dns-client create -d domain.com -n node-0 -t A -v 10.90.61.30
2018/06/03 12:40:22 Error creating DNS record: Reading record: Reading record: Unmarshalling response: Unmarshalling json: invalid character '\x00' after array element

我怀疑添加了空终止符 here当辅助方法调用 sprintf 将 json 响应连接到数组中时。

但是,即使在添加了如下所示的 bytes.Trim 之后......我仍然收到空终止符错误并且似乎空终止符仍然存在......

func unmarshalResponse(resp string) ([]interface{}, error) {
var data interface{}
byteRespTrim := []byte(resp)
fmt.Print("found a null terminator at -- ")
fmt.Println(bytes.Index(byteRespTrim, []byte("\x00")))
fmt.Print("total length = ")
fmt.Println(len(byteRespTrim))
byteRespTrim = bytes.Trim(byteRespTrim, "\x00")
fmt.Print("after trim found a null terminator at -- ")
loc := bytes.Index(byteRespTrim, []byte("\x00"))
fmt.Print(loc)

调用时得到以下信息

(master)⚡ % ./windows-dns-test create -d domain.com -n openshift-node-0 -t A -v 10.90.61.30                       
found a null terminator at -- 2102
total length = 2615
after trim found a null terminator at -- 2102

最佳答案

从您的日志中,违规字符似乎位于 2102 位置,而整个数组有 2615 元素。

所以看起来 Trim 不会解决它,因为问题不一定是数组的最后一个字符。

您是否尝试删除所有出现的地方,例如使用 Replace

byteRespTrim = bytes.Replace(byteRespTrim, []byte("\x00"), []byte{}, -1)

关于go - 无法从字节数组中删除 Null 终止符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50670428/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com