我需要解析UDP数据包,但这些数据包可能无效或包含一些错误。我想在字节转换为字符串后,将无效的字符替换为
我该如何做?这是我的代码:
.
,以显示数据包的内容。我该如何做?这是我的代码:
func main() {
a := []byte{'a', 0xff, 0xaf, 'b', 0xbf}
s := string(a)
s = strings.Replace(s, string(0xFFFD), ".", 0)
fmt.Println("s: ", s) // I would like to display "a..b."
for _, r := range s {
fmt.Println("r: ", r)
}
rs := []rune(s)
fmt.Println("rs: ", rs)
}
a
和b
之间只有一个“点”- 如果想看精确的字节偏移量,这是误导人的。我认为原帖的作者实际上只是想要可打印(和不可打印)的ASCII字节。使用UTF-8技巧会使事情过于复杂化。 - colm.anseoá
是可打印的,并且具有代码225
:它甚至适合单个字节!然而,在UTF-8中,它占用2个字节。如果您为单个字符打印这2个字节,那么这也可能会产生误导。为了获得准确的偏移量,应优先使用hex.Dump()
。 - icza