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.