本文探討如何在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