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
let read_be buf off size =
let v = ref 0 in
for i = 0 to size - 1 do
v := (!v lsl 8) lor Bytes.get_uint8 buf (off + i)
done;
!v
let read_le buf off size =
let v = ref 0 in
for i = size - 1 downto 0 do
v := (!v lsl 8) lor Bytes.get_uint8 buf (off + i)
done;
!v
let read endian buf off size =
match (endian : Types.endian) with
| Big -> read_be buf off size
| Little -> read_le buf off size
let write_be buf off size v =
let v = ref v in
for i = size - 1 downto 0 do
Bytes.set_uint8 buf (off + i) (!v land 0xFF);
v := !v lsr 8
done
let write_le buf off size v =
let v = ref v in
for i = 0 to size - 1 do
Bytes.set_uint8 buf (off + i) (!v land 0xFF);
v := !v lsr 8
done
let write endian buf off size v =
match (endian : Types.endian) with
| Big -> write_be buf off size v
| Little -> write_le buf off size v