-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathunmarshal.go
37 lines (28 loc) · 836 Bytes
/
unmarshal.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package medtronic
func twoByteUint(data []byte) uint16 {
return uint16(data[0])<<8 | uint16(data[1])
}
func twoByteUintLE(data []byte) uint16 {
return uint16(data[1])<<8 | uint16(data[0])
}
func twoByteInt(data []byte) int {
return int(int16(twoByteUint(data)))
}
func twoByteIntLE(data []byte) int {
return int(int16(twoByteUintLE(data)))
}
func fourByteUint(data []byte) uint32 {
return uint32(twoByteUint(data[0:2]))<<16 | uint32(twoByteUint(data[2:4]))
}
func fourByteInt(data []byte) int {
return int(int32(fourByteUint(data)))
}
func marshalUint16(n uint16) []byte {
return []byte{byte(n >> 8), byte(n & 0xFF)}
}
func marshalUint16LE(n uint16) []byte {
return []byte{byte(n & 0xFF), byte(n >> 8)}
}
func marshalUint32(n uint32) []byte {
return append(marshalUint16(uint16(n>>16)), marshalUint16(uint16(n))...)
}