こんなの絶対誰かが作ってるし探せば転がってるんだろうけどググるのも面倒くさくなったので自分で作りました。
以下は README に書いた内容。まぁ実質のコードはたったこれだけで
package godump
import (
"bytes"
"fmt"
"io"
)
//DumpBytes returns []bytes literal string
func DumpBytes(r io.Reader, name string) (io.Reader, error) {
buf := new(bytes.Buffer)
b := make([]byte, 1)
var err error
sep := fmt.Sprintf("var %s = []byte{", name)
for true {
if _, err = r.Read(b); err != nil {
break
}
fmt.Fprintf(buf, "%s%#02x", sep, b)
sep = ", "
}
fmt.Fprintln(buf, "}")
return buf, nil
}
外部パッケージとして読み込む価値もないので,もし使いたいという奇特な方がおられるなら,中身見て適当にコピペしてください。
Install
$ go get github.com/spiegel-im-spiegel/godump
Installing by dep.
$ dep ensure -add github.com/spiegel-im-spiegel/godump
Usage
dump, err := godump.DumpBytes(bytes.NewBufferString("hello world"), "foobar")
if err != nil {
return
}
io.Copy(os.Stdout, dump)
// Output:
// var foobar = []byte{0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64}
Command Line Interface
$ godump -h
Usage:
godump [flags] [binary file]
Flags:
-h, --help help for godump
-n, --name string value name (default "dumpList")
$ echo hello world | godump -n foobar
var foobar = []byte{0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0a}
$ cat input.txt
hello world
$ godump -n foobar input.txt
var foobar = []byte{0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64}