本文探讨如何在go语言中将字符串转换为二进制形式并写入文件,尤其针对类似redis RDB文件生成的需求。 不少开发者尝试使用binary包,但效果不尽如人意。 其实,字符串本身就以二进制形式存储,无需额外转换。
让我们先看一个简单的例子,将字符串”redis“写入文件:
package main import ( "fmt" "io" "log" "os" ) func main() { file, err := os.OpenFile("redis.bin", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { log.Fatal(err) } defer file.Close() n, err := io.WriteString(file, "redis") if err != nil { log.Fatal(err) } fmt.Printf("Wrote %d bytesn", n) }
这段代码使用io.WriteString直接将字符串写入文件”redis.bin”。 使用hexdump或xxd命令查看文件内容:
xxd redis.bin
输出将显示类似52 45 44 49 53的十六进制表示,这正是”redis”字符串的二进制表示。 %!xxd命令在vim中也能正确显示。
立即学习“go语言免费学习笔记(深入)”;
因此,Go语言中将字符串写入文件本身就是二进制写入,无需使用binary包进行额外的转换。 开发者之前遇到的问题可能源于对字符串和二进制数据存储方式的误解。 io.WriteString函数已足够满足将字符串以二进制形式写入文件的需求。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END