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