Golang Go语言中,字符串\x00 想转成有转义意义的字符串,可以吗

发布于 1周前 作者 sinazl 来自 Go语言

null
Golang Go语言中,字符串\x00 想转成有转义意义的字符串,可以吗

10 回复

这应该是 16 进制的 ascii 吧

更多关于Golang Go语言中,字符串\x00 想转成有转义意义的字符串,可以吗的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


对的,想转成 ascii,但是一直输出\x00

\x00 的 ASCII 是 null,怎么显示……

是的,就是空的,但是我这里输出了\x00 这个字符串。
我从一个文件里读到一个字符串\x00 想转成 null 转不了

所以在这里请教下诸位大佬

应该是你的 terminal 的原因

package main

import “fmt"

func main() {

fmt.Printf(”%#v", “\000”)
fmt.Printf("%v", “\000”)
fmt.Print("\000")
}


难道用的 %#v ?
后两个都是正常的。

用 encoding/hex 转成 hex string ?

准确来说, 是\00 怎么通过程序转成 \0

在Golang(Go语言)中,将包含空字符(\x00,即ASCII码的NULL字符)的字符串转换为包含转义意义的字符串是完全可行的,但需要注意的是,Go语言的字符串处理默认并不会自动将\x00转换为转义字符表示,因为\x00在字符串中通常被视为字符串的终结符(null terminator),尽管Go语言的字符串不是以\x00结尾的。

如果你想要将\x00字符显式地表示为转义字符\x00的形式,你可以通过字符串遍历和构建新的字符串来实现。以下是一个简单的示例代码:

package main

import (
	"fmt"
)

func main() {
	str := "\x00hello"
	escapedStr := ""
	for i := 0; i < len(str); i++ {
		if str[i] == 0 {
			escapedStr += "\\x00"
		} else {
			escapedStr += string(str[i])
		}
	}
	fmt.Println(escapedStr) // 输出: \x00hello
}

这段代码遍历输入字符串str,当遇到\x00字符时,将其替换为"\x00"的字符串表示形式。对于其他字符,则直接添加到结果字符串escapedStr中。这样,你就可以得到一个将\x00字符显式表示为\x00的字符串了。

回到顶部