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  }