2016-02-04 00:54:51 -08:00
|
|
|
package common
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
)
|
|
|
|
|
|
|
|
type String []byte
|
|
|
|
|
|
|
|
func ReadString(data []byte) (str String, remainder []byte, err error) {
|
|
|
|
if len(data) == 0 {
|
|
|
|
err = errors.New("no string in empty byte slice")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
length := Integer([]byte{data[0]})
|
|
|
|
data = data[1:]
|
|
|
|
|
|
|
|
if len(data) < length {
|
2016-02-04 01:02:47 -08:00
|
|
|
str = data
|
2016-02-04 00:54:51 -08:00
|
|
|
err = errors.New("string longer than provided slice")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
str = data[:length]
|
|
|
|
remainder = data[length:]
|
|
|
|
return
|
|
|
|
}
|