github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgBinary/kmgBinary.go (about) 1 package kmgBinary 2 3 import ( 4 "fmt" 5 "io" 6 ) 7 8 // 只能写入长度小于255的字符串. 9 func MustWriteString255(w io.Writer, s string) { 10 if len(s) > 255 { 11 panic(fmt.Errorf("[MustWriteString255] len(s)[%d]>255", len(s))) 12 } 13 _, err := w.Write([]byte{byte(len(s))}) 14 if err != nil { 15 panic(err) 16 } 17 _, err = w.Write([]byte(s)) 18 if err != nil { 19 panic(err) 20 } 21 } 22 23 // 读取用 MustWriteString255 写入的东西 24 func ReadString255(r io.Reader) (s string, err error) { 25 buf := make([]byte, 256) 26 _, err = io.ReadFull(r, buf[:1]) 27 if err != nil { 28 return "", err 29 } 30 len := int(buf[0]) 31 _, err = io.ReadFull(r, buf[:len]) 32 if err != nil { 33 return "", err 34 } 35 return string(buf[:len]), nil 36 }