Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
バイナリデータを Golang の []byte リテラル表記に変換する簡単なお仕事 ref: http://qiita.com/spiegel-im-spiegel/items/272c1b8c01eb287059e0
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
}
$ go get github.com/spiegel-im-spiegel/godump
$ go get github.com/spiegel-im-spiegel/godump
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}
$ dep ensure -add github.com/spiegel-im-spiegel/godump
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}
$ godump -h
Usage:
godump [flags] [binary file]
Flags:
-h, --help help for godump
-n, --name string value name (default "dumpList")
$ 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}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment