I have a parsing function that will fill a byte array with data given in a string format.
func Parse(data string) ([]byte, error) {
bs := make([]byte, 6)
// Create sub slices over larger slice
a := bs[0:2]
b := bs[2:4]
c := bs[4:6]
// Attempt to scan each string value into their respective slices
_, err := fmt.Sscanf(data, "%4x-%4x-%4x", &a, &b, &c)
return bs, err
}
Evaluating this function on the Go Playground the null value of the byte array is returned.
func main() {
d, err := Parse("00ff-ff00-00ff")
fmt.Printf("Value: %+v Error: %s
", d, err)
}
Which yields:
Value: [0 0 0 0 0 0] Error: %!s(<nil>)
I expected the above approach to return [0 255 255 0 0 255]
. Is there a correct approach to populating a byte array with data using Sscanf?