This repository has been archived on 2024-05-23. You can view files and clone it, but cannot push or open issues or pull requests.
dns-toy/lib/utils.ml

35 lines
818 B
OCaml
Raw Normal View History

let get_bytecode data =
let result =
List.map
(fun byte ->
let code = Char.code byte in
if code >= 65 && code <= 122
then String.make 1 byte
else Printf.sprintf "\\x%02X" code)
(List.of_seq (Bytes.to_seq data))
in
String.concat "" result
;;
2023-06-05 21:23:53 +02:00
let get_obj_size obj = Obj.size (Obj.repr obj)
let new_buffer size list =
let buffer = Bytes.create size in
let verification =
List.fold_left
(fun acc field ->
Bytes.set_uint16_be buffer acc field;
acc + 2)
0
list
in
if verification != size then failwith "Issue converting header to bytes";
buffer
;;
2023-06-13 02:36:32 +02:00
let unpack_short_be reader offset =
let msb = int_of_char (Bytes.get reader offset) in
let lsb = int_of_char (Bytes.get reader (offset + 1)) in
(msb lsl 8) + lsb
;;