gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/binaryx/binex.go (about)

     1  package binaryx
     2  
     3  import (
     4  	"encoding/binary"
     5  	"fmt"
     6  	"gitee.com/zhongguo168a/gocodes/myx/errorx"
     7  	"io"
     8  )
     9  
    10  func WriteBool(w io.Writer, order binary.ByteOrder, val bool) error {
    11  	return binary.Write(w, order, &val)
    12  }
    13  
    14  func WriteInt8(w io.Writer, order binary.ByteOrder, val int8) error {
    15  	return binary.Write(w, order, &val)
    16  }
    17  
    18  func WriteInt16(w io.Writer, order binary.ByteOrder, val int16) error {
    19  	return binary.Write(w, order, &val)
    20  }
    21  func WriteInt32(w io.Writer, order binary.ByteOrder, val int32) error {
    22  	return binary.Write(w, order, &val)
    23  }
    24  func WriteInt64(w io.Writer, order binary.ByteOrder, val int64) error {
    25  	return binary.Write(w, order, &val)
    26  }
    27  func WriteUint8(w io.Writer, order binary.ByteOrder, val uint8) error {
    28  	return binary.Write(w, order, &val)
    29  }
    30  func WriteUint16(w io.Writer, order binary.ByteOrder, val uint16) error {
    31  	return binary.Write(w, order, &val)
    32  }
    33  func WriteUint32(w io.Writer, order binary.ByteOrder, val uint32) error {
    34  	return binary.Write(w, order, &val)
    35  }
    36  func WriteUint64(w io.Writer, order binary.ByteOrder, val uint64) error {
    37  	return binary.Write(w, order, &val)
    38  }
    39  func WriteFloat32(w io.Writer, order binary.ByteOrder, val float32) error {
    40  	return binary.Write(w, order, &val)
    41  }
    42  func WriteFloat64(w io.Writer, order binary.ByteOrder, val float64) error {
    43  	return binary.Write(w, order, &val)
    44  }
    45  
    46  func WriteBytes(w io.Writer, order binary.ByteOrder, data []byte) (err error) {
    47  	err = binary.Write(w, order, int16(len(data)))
    48  	if err != nil {
    49  		return err
    50  	}
    51  	err = binary.Write(w, order, data)
    52  	if err != nil {
    53  		return err
    54  	}
    55  
    56  	return nil
    57  }
    58  
    59  func WriteBytesLength(w io.Writer, order binary.ByteOrder, data []byte) (err error) {
    60  	err = binary.Write(w, order, data)
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	return nil
    66  }
    67  
    68  func WriteUTF(w io.Writer, order binary.ByteOrder, data string) (err error) {
    69  	err = binary.Write(w, order, int16(len(data)))
    70  	if err != nil {
    71  		return
    72  	}
    73  	err = binary.Write(w, order, []byte(data))
    74  	if err != nil {
    75  		return
    76  	}
    77  	return
    78  }
    79  
    80  func ReadBool(r io.Reader, order binary.ByteOrder) (data bool, err error) {
    81  	err = binary.Read(r, order, &data)
    82  	return
    83  }
    84  
    85  func ReadInt8(r io.Reader, order binary.ByteOrder) (data int8, err error) {
    86  	err = binary.Read(r, order, &data)
    87  	return
    88  }
    89  
    90  func ReadInt16(r io.Reader, order binary.ByteOrder) (data int16, err error) {
    91  	err = binary.Read(r, order, &data)
    92  	return
    93  }
    94  
    95  func ReadInt32(r io.Reader, order binary.ByteOrder) (data int32, err error) {
    96  	err = binary.Read(r, order, &data)
    97  	return
    98  }
    99  
   100  func ReadInt64(r io.Reader, order binary.ByteOrder) (data int64, err error) {
   101  	err = binary.Read(r, order, &data)
   102  	return
   103  }
   104  
   105  func ReadUint8(r io.Reader, order binary.ByteOrder) (data uint8, err error) {
   106  	err = binary.Read(r, order, &data)
   107  	return
   108  }
   109  
   110  func ReadUint16(r io.Reader, order binary.ByteOrder) (data uint16, err error) {
   111  	err = binary.Read(r, order, &data)
   112  	return
   113  }
   114  
   115  func ReadUint32(r io.Reader, order binary.ByteOrder) (data uint32, err error) {
   116  	err = binary.Read(r, order, &data)
   117  	return
   118  }
   119  
   120  func ReadUint64(r io.Reader, order binary.ByteOrder) (data uint64, err error) {
   121  	err = binary.Read(r, order, &data)
   122  	return
   123  }
   124  
   125  func ReadFloat32(r io.Reader, order binary.ByteOrder) (data float32, err error) {
   126  	err = binary.Read(r, order, &data)
   127  	return
   128  }
   129  
   130  func ReadFloat64(r io.Reader, order binary.ByteOrder) (data float64, err error) {
   131  	err = binary.Read(r, order, &data)
   132  	return
   133  }
   134  
   135  func ReadBytes(r io.Reader, order binary.ByteOrder) (data []byte, err error) {
   136  	var tlen int16
   137  	err = binary.Read(r, order, &tlen)
   138  	if err != nil {
   139  		err = errorx.Wrap(err, fmt.Sprintf("read length"))
   140  		return
   141  	}
   142  	data = make([]byte, tlen)
   143  	err = binary.Read(r, order, &data)
   144  	if err != nil {
   145  		err = errorx.Wrap(err, fmt.Sprintf("read body"))
   146  		return
   147  	}
   148  	return
   149  }
   150  
   151  func ReadBytesLength(r io.Reader, order binary.ByteOrder, length int16) (data []byte, err error) {
   152  	data = make([]byte, length)
   153  	err = binary.Read(r, order, &data)
   154  	if err != nil {
   155  		err = errorx.Wrap(err, fmt.Sprintf("read body"))
   156  		return
   157  	}
   158  	return
   159  }
   160  
   161  func ReadUTF(r io.Reader, order binary.ByteOrder) (data string, err error) {
   162  	tlen := int16(0)
   163  	err = binary.Read(r, order, &tlen)
   164  	if err != nil {
   165  		err = errorx.Wrap(err, fmt.Sprintf("read length"))
   166  		return
   167  	}
   168  	tbs := make([]byte, tlen)
   169  	err = binary.Read(r, order, &tbs)
   170  	if err != nil {
   171  		err = errorx.Wrap(err, fmt.Sprintf("read body"))
   172  		return
   173  	}
   174  	data = string(tbs)
   175  	return
   176  }