codec/h264/h264dec/helpers.go: added helpers.go file and binToSlice func for converting binary string to a []byte

This commit is contained in:
Saxon 2019-07-31 22:35:09 +09:30
parent 939fd4853e
commit 547e9f22ae
1 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,41 @@
/*
DESCRIPTION
helpers.go provides general helper utilities.
AUTHORS
Saxon Nelson-Milton <saxon@ausocean.org>, The Australian Ocean Laboratory (AusOcean)
*/
package h264dec
import "errors"
// binToSlice is a helper function to convert a string of binary into a
// corresponding byte slice, e.g. "0100 0001 1000 1100" => {0x41,0x8c}.
// Spaces in the string are ignored.
func binToSlice(s string) ([]byte, error) {
var (
a byte = 0x80
cur byte
bytes []byte
)
for _, c := range s {
switch c {
case ' ':
continue
case '1':
cur |= a
case '0':
default:
return nil, errors.New("invalid binary string")
}
a >>= 1
if a == 0 {
bytes = append(bytes, cur)
cur = 0
a = 0x80
}
}
return bytes, nil
}