let rec hex_of_int n=
let x=n mod 16
and r=n/16
in let prec=(
if r=0 then ""
else hex_of_int (n/16))
in prec^
(match x with
10 -> "A"
|11-> "B"
|12-> "C"
|13-> "D"
|14-> "E"
|15-> "F"
|nb-> string_of_int nb)
;;
hex_of_int 15;;(* string : F *)
let rec int_of_hex h=
let len=string_length h
in if len > 0
then
let x=h.[0]
and m=int_of_hex (sub_string h 1 (len-1))
in (match x with
`A` -> 10
|`B`-> 11
|`C`-> 12
|`D`-> 13
|`E`-> 14
|`F`-> 15
| c -> int_of_char c)
+ m*16
else 0
;;
int_of_hex "FF";;(* int : 255 *)