TD 8 |
Int16
permettant de manipuler des entiers
non signés codés sur deux octets au format « gros-boutiste »
(big-endian). Pour cela, nous allons
interfacer
des fonctions écrites en C avec du OCaml. En C, les
entiers non signés codés sur deux entiers peuvent être directement
manipulés via le type primitif unsigned short
et les macros
htons()
1
(host to network
short) et ntohs()
2 permettent de passer de la
représentation utilisée par la machine hôte pour coder les entiers à
la représentation réseau (gros-boutiste).int16.ml
et les fonctions C dans le fichier ml_int16.c
, il est
possible de générer le fichier int16
avec la commande
ocamlc -custom -o int16 ml_int16.c int16.ml |
ocamlopt -o int16 ml_int16.c int16.ml |
read_int16_from_string
qui prend en
arguments une chaîne de caractères et un décalage et qui retourne un
entier correspondant à la valeur entière codée sur deux octets
stockée dans la chaîne de caractère avec ce décalage. Cette fonction
fait appel à la fonction C ml_read_int16_from_string()
Chr.code
).
invalid_argument
.
write_int16_to_string
et écrire la fonction C
correspondante ml_write_int16_to_string()
effectuant la conversion inverse. La
chaîne de caractères et le décalage où l'entier devra être stocké
seront passés en arguments.string_of_array
et écrire la fonction C
correspondante ml_string_of_array ()
qui prend en argument un
tableau d'entiers et qui renvoie une chaîne de caractères contenant
ces entiers dans le codage que nous avons défini.read_int16_from_string
.
This document was translated from LATEX by HEVEA and HACHA.