binary.mx raw

   1  // Package binary is a lightweight replacement package for encoding/binary.
   2  package binary
   3  
   4  // This file contains small helper functions for working with binary data.
   5  
   6  var LittleEndian = littleEndian{}
   7  
   8  type littleEndian struct{}
   9  
  10  // Encode data like encoding/binary.LittleEndian.Uint16.
  11  func (littleEndian) Uint16(b []byte) uint16 {
  12  	return uint16(b[0]) | uint16(b[1])<<8
  13  }
  14  
  15  // Store data like binary.LittleEndian.PutUint16.
  16  func (littleEndian) PutUint16(b []byte, v uint16) {
  17  	b[0] = byte(v)
  18  	b[1] = byte(v >> 8)
  19  }
  20  
  21  // Append data like binary.LittleEndian.AppendUint16.
  22  func (littleEndian) AppendUint16(b []byte, v uint16) []byte {
  23  	return append(b,
  24  		byte(v),
  25  		byte(v>>8),
  26  	)
  27  }
  28  
  29  // Encode data like encoding/binary.LittleEndian.Uint32.
  30  func (littleEndian) Uint32(b []byte) uint32 {
  31  	return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
  32  }
  33  
  34  func (littleEndian) Uint64(b []byte) uint64 {
  35  	return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
  36  		uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
  37  }
  38