First off: installing Go looks complicated, but blindly following the instructions is easy! No pets will be harmed (I hope!)
I want to convert hex to base64. Gobyexample.com explains how to grab command line arguments. The first thing I noticed was that you can create a variable and assign it a value using
hex := os.Args // zero is the path to the program
To get the hex values from the string as bytes I tried the
Sscan function and got nothing. So the second thing I learnt was that functions can return
tuples multiple values
var b string n, err := fmt.Sscan(hex, "%x", b) // number of items successfully scanned
type is not a pointer: string. Googling took me to a go cheat sheet so I tried
&b as an argument to
Sscan. I’ve also switched from
$ go build program.go $ ./program "hex string"
$ go run program.go "hex string"
Looking over golang.org/pkg/fmt again I realised I wanted
Sscanf, but was typing
Sscan (here as well!). Finally, Go conveniently supports base64 encoding and that page says the encoder requires a
byte so I’ve changed
var b string to
var b byte and used
sEnc := b64.StdEncoding.EncodeToString(b)
Of course, I’ve imported
b64 not to save space (as the page suggests) but because pasting is more fun than typing.
Seems to work!