Le mystère des sept dalles en bronze

Documents pareils
Jeux de caracte res et encodage (par Michel Michaud 2014)

Étude des formes de pratiques de la gymnastique sportive enseignées en EPS à l école primaire

Documentation SecurBdF

Les intermédiaires privés dans les finances royales espagnoles sous Philippe V et Ferdinand VI

Conversion d un entier. Méthode par soustraction

Représentation d un entier en base b

Codage d information. Codage d information : -Définition-

1 Introduction au codage

Peut-on perdre sa dignité?

Activités numériques [13 Points]

Cours Informatique 1. Monsieur SADOUNI Salheddine

Informatique Générale

Port de Saint Laurent du Var - Barème des redevances Année /10

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

CONJUGUÉ D'UN POINT PAR RAPPORT À UN TRIANGLE

VMware ESX : Installation. Hervé Chaudret RSI - Délégation Centre Poitou-Charentes

Algorithme. Table des matières

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Les opérations binaires

Licence Sciences et Technologies Examen janvier 2010

Représentation des Nombres

La mémoire. Un ordinateur. L'octet. Le bit

Le codage informatique

Architecture des ordinateurs Introduction à l informatique

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites

Logiciel de Base. I. Représentation des nombres

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 10 Arithmétique réelle

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

Une version javascript sera disponible directement dans le cours prochainement.

PROBLEME(12) Première partie : Peinture des murs et du plafond.

Chap17 - CORRECTİON DES EXERCİCES

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Sylvain Meille. Étude du comportement mécanique du plâtre pris en relation avec sa microstructure.

Maintenabilité d un parc applicatif

IFT2880 Organisation des ordinateurs et systèmes

Angles orientés et trigonométrie

Structure du format BMP, sa lecture, sa construction et son écriture

V- Manipulations de nombres en binaire

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Le théorème de Thalès et sa réciproque

L AIDE AUX ATELIERS D ARTISTES :

ÉCONOMIE. Financement des PME : les banques en première ligne 5 PAGES D OFFRES D EMPLOI. Supplément Étudiant

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

INFORMATIONS DIVERSES

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Fonctions homographiques

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Bases de programmation. Cours 5. Structurer les données

SOLUTIONS TECHNOLOGIQUES Fiche activité élève

Le centre de gestion a le plaisir de vous adresser les statistiques professionnelles élaborées à partir des dossiers de gestion 2013.

Correction : E = Soit E = -1,6. F = 12 Soit F = y = 11. et G = -2z + 4y G = 2 6 = 3 G = G =

Architecture de l ordinateur

Corrigé des TD 1 à 5

Série D65/D75/D72 Afficheurs digitaux modulaires

Limitations of the Playstation 3 for High Performance Cluster Computing

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

5 ème Chapitre 4 Triangles

SOUS SOL PANOPLIE EF. MAITRISE D'OUVRAGE la justice du Burundi Bujumbura Tel Architectes mandataires Atelier D MAITRISE D'OEUVRE

Probabilités sur un univers fini

Chapitre 2. Matrices

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Continuité et dérivabilité d une fonction

Microprocesseur + Logiciel

Formats d images. 1 Introduction

Conventions d écriture et outils de mise au point

315 et 495 sont dans la table de 5. 5 est un diviseur commun. Leur PGCD n est pas 1. Il ne sont pas premiers entre eux

Chapitre 1 I:\ Soyez courageux!

Introduction à l algorithmique et à la programmation (Info 2)

CHAPITRE VIII : Les circuits avec résistances ohmiques

UE Programmation Impérative Licence 2ème Année

Activité 1. Compter les points Écriture binaire des nombres. Résumé. Liens pédagogiques. Compétences. Âge. Matériel

1. GENERALITES OBJET DU MARCHE DUREE DU MARCHE REGLEMENTATION SECURITE ASTREINTE ET GESTION DES

Structures algébriques

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Note de cours. Introduction à Excel 2007

Cours d Analyse. Fonctions de plusieurs variables

!" #$#% #"& ' ( &)(*"% * $*' )#""*(+#%(' $#),")- '(*+.%#"'#/* "'") $'

Introduction à MATLAB R

Dérivation : cours. Dérivation dans R

Le seul ami de Batman

Internet Protocol. «La couche IP du réseau Internet»

Représentation géométrique d un nombre complexe

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

Séquence 2. Repérage dans le plan Équations de droites. Sommaire


Guide d usage pour Word 2007

Représentation d un nombre en machine, erreurs d arrondis

Les joints Standards COMPOSANTS LEANTEK ET UTILISATIONS. Tous nos joints standards sont disponibles en version ESD. Vis de fixation : S1-S4

# $!%$!&$'(!(!()! $(! *)#%!"$'!+!%(!**&%',&-#.*!* /!01+'$*2333

Transcription:

Statistiques Forensiques Le mystère des sept dalles en bronze Jean R. Lobry 19 août 2008 De mystérieuses inscriptions nous conduisent à manipuler des octets et des bits. Table des matières 1 Introduction 2 2 Manipulation des bits et des octets 2 2.1 Définition............................... 2 2.2 Conversion hexadécimal binaire................. 3 2.2.1 Hexadécimal binaire................... 3 2.2.2 Hexadécimal binaire................... 4 3 Opérations au niveau des bits 4 3.1 Comparaisons bits à bits....................... 4 3.2 Opérateurs logiques bits à bits................... 5 3.2.1 Négation logique....................... 5 3.2.2 Le et logique......................... 5 3.2.3 Le ou logique......................... 5 3.2.4 Opérations de décalage de bits............... 5 4 Décodage des dalles en bronze 6 4.1 Le code ASCII............................ 6 4.2 Importation des données....................... 6 4.3 Conversions du binaire en octets.................. 7 4.4 Conversion des octets en ASCII................... 8 4.5 Conversion en latin-1......................... 8 1

1 Introduction Le visiteur qui pénètre dans l enceinte du site du service central de l INPS 1 et du LPS 2 de Lyon à Écully découvrira sous ses pas les sept mystérieuses dalles en bronze dont les images sont données dans les marges de ce document. Toute l information est contenue dans ces images, vous pouvez vous amuser à résoudre par vous même le mystère des sept dalles en bronze en ne lisant pas la suite. Pour vous éviter de saisir les données vous pouvez utiliser le fichier dalle.txt qui donne les valeurs portées par les sept dalles en bronze. Les 15 premières lignes de ce fichier sont les suivantes : Le site d Écully où l on trouve de mystérieuses dalles en bronze cat(readlines("http://pbil.univ-lyon1.fr/r/donnees/dalle.txt", n = 15), sep = "\n") Dalle 0 : 01010011 01010101 01010010 Séparateur : 00100000 Dalle 1 : 01001100 01000101 Êtes-vous capable par vous même de résoudre les mystère des dalles en bronze? 2 Manipulation des bits et des octets Nous n avons que deux symboles utilisés, 0 et 1, il s agit donc d un codage binaire. Ces symboles sont regroupés par paquets de 8, autrement dit des octets. Voyons les outils qui sont à notre disposition sous pour manipuler ce type de données. numéro 0. Prise aérienne du 29-JUL-08 à environ 1.5 m du sol. Une indication d échelle est donnée par la dimension des pieds du photographe. 2.1 Définition Un octet est une suite de huits bits, il y a donc 2 8 = 256 valeurs possibles en tout. En partant de 0, les valeurs possibles sont donc dans l intervalle [00000000, 11111111] en base 2, dans l intervalle [0, 255] en base 10, et dans l intervalle [00, ff] en base héxadécimale. Ils font parti dans de la classe raw et sont affichés en hexadécimal : numéro 1. as.raw(0:255) [1] 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 [27] 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 [53] 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d [79] 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 [105] 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 [131] 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b [157] 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 [183] b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf [209] d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 [235] ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 1 Institut National de Police Scientifique. 2 Laboratoire de Police Scientifique. numéro 2. Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 2/9 Compilé le 2008-08-19

Les constantes hexadécimales sont notées avec le préfixe 0x, par exemple : 0x10 [1] 16 as.raw(0x10) [1] 10 Les fonctions as.raw() et as.integer() permettent de passer de la notation décimale à héxadécimale, et réciproquement. Vérification : as.raw(16) [1] 10 as.integer(as.raw(16)) [1] 16 all(as.integer(as.raw(0:255)) == 0:255) [1] TRUE as.integer(0x10) [1] 16 as.raw(as.integer(0x10)) [1] 10 all(as.raw(as.integer(0x00:0xff)) == 0x00:0xff) [1] TRUE 2.2 Conversion hexadécimal binaire 2.2.1 Hexadécimal binaire La fonction rawtobits() convertit un vecteur d octets en un vecteur 8 fois plus long où chaque octet a été décomposé en ses bits constitutifs. rawtobits(as.raw(0x1)) [1] 01 00 00 00 00 00 00 00 rawtobits(as.raw(0x80)) [1] 00 00 00 00 00 00 00 01 Le résultat est toujours de la classe raw mais seules les valeurs 00 et 01 sont possibles. Ils sont affichés avec deux chiffres car de la classe raw. Si on veut une notation plus compacte pour ne pas afficher le premier 0, non informatif ici, il suffit de les convertir en entiers : as.integer(rawtobits(as.raw(0x1))) [1] 1 0 0 0 0 0 0 0 as.integer(rawtobits(as.raw(0x80))) [1] 0 0 0 0 0 0 0 1 La fonction rawtobits() nous renvoie la version gros-boutiens, c est à dire celle où les bits de poids fort sont à droite. C est le contraire de l écriture décimale à laquelle nous sommes habitués. Pour avoir la version petit-boutiens il suffit d inverser l ordre des bits : numéro 3. numéro 4. numéro 5. numéro 6. rev(as.integer(rawtobits(as.raw(0x1)))) [1] 0 0 0 0 0 0 0 1 rev(as.integer(rawtobits(as.raw(0x80)))) [1] 1 0 0 0 0 0 0 0 Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 3/9 Compilé le 2008-08-19

2.2.2 Hexadécimal binaire La fonction packbits() tranforme un vecteur de bits la classe integer, raw ou logical en un vecteur 8 fois moins long de la classe raw : packbits(as.integer(c(0, 0, 0, 0, 0, 0, 0, 1))) packbits(as.integer(c(1, 0, 0, 0, 0, 0, 0, 0))) [1] 01 On peut aussi utiliser le suffixe L pour préciser directement que l on utilise des constantes entières, le préfixe 0x pour des constantes héxadécimales, ou enfin T et F pour des constantes logiques : packbits(c(0l, 0L, 0L, 0L, 0L, 0L, 0L, 1L)) packbits(as.raw(c(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1))) packbits(c(f, F, F, F, F, F, F, T)) C est la version gros-boutiens du codage des octets qui est utilisée. Si on veut la version petit-boutiens il faut inverser l ordre des bits : packbits(rev(as.integer(c(0, 0, 0, 0, 0, 0, 0, 1)))) [1] 01 packbits(rev(as.integer(c(1, 0, 0, 0, 0, 0, 0, 0)))) 3 Opérations au niveau des bits 3.1 Comparaisons bits à bits À la différence des variables numériques où il est toujours préférable d utiliser all.equal() pour tester l égalité numérique entre deux valeurs, pour les variables de type raw les opérateurs == et!= ne posent pas problème puiqu ils vont travailler bit à bit : as.raw(127) == as.raw(127) [1] TRUE as.raw(127)!= as.raw(127) [1] FALSE Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 4/9 Compilé le 2008-08-19

3.2 Opérateurs logiques bits à bits 3.2.1 Négation logique La négation logique inverse tous les bits : as.raw(1) [1] 01!as.raw(1) [1] fe Pour mieux voir ce qu il se passe on transforme ceci en version binaire petitboutiens : r2b <- function(x) as.integer(rev(rawtobits(x))) r2b(as.raw(1)) [1] 0 0 0 0 0 0 0 1 r2b(!as.raw(1)) [1] 1 1 1 1 1 1 1 0 3.2.2 Le et logique r2b(as.raw(3)) [1] 0 0 0 0 0 0 1 1 r2b(as.raw(101)) [1] 0 1 1 0 0 1 0 1 r2b(as.raw(3) & as.raw(101)) [1] 0 0 0 0 0 0 0 1 3.2.3 Le ou logique r2b(as.raw(3)) [1] 0 0 0 0 0 0 1 1 r2b(as.raw(101)) [1] 0 1 1 0 0 1 0 1 r2b(as.raw(3) as.raw(101)) [1] 0 1 1 0 0 1 1 1 3.2.4 Opérations de décalage de bits La fonction rawshift() permet de décaler de n bits à gauche ou à droite : x <- as.raw(100) r2b(x) [1] 0 1 1 0 0 1 0 0 r2b(rawshift(x, n = +1)) [1] 1 1 0 0 1 0 0 0 r2b(rawshift(x, n = -1)) [1] 0 0 1 1 0 0 1 0 Décaler de n bits à gauche revient à multiplier par 2 n, décaler de n bits à droite revient à diviser par 2 n, par exemple : x <- as.raw(16) as.integer(x) * 2^3 [1] 128 as.integer(rawshift(x, 3)) [1] 128 as.integer(x)/(2^4) [1] 1 as.integer(rawshift(x, -4)) [1] 1 Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 5/9 Compilé le 2008-08-19

4 Décodage des dalles en bronze 4.1 Le code ASCII On se doute un peu que les dalles en bronze ont quelque chose à voir avec le code ASCII 3. La fonction rawtochars() permet de passer d un octet au caractère du code ASCII correspondant. Le code ASCII n est que sur 7 bits, il n y a donc que 128 caractères numérotés de 0 à 127. On peut reconstruire la table du code ASCI ainsi : ascii.df <- data.frame(hex = as.raw(0:127)) row.names(ascii.df) <- 0:127 b2c <- function(x) paste(r2b(x), collapse = "") ascii.df$bin <- lapply(ascii.df$hex, b2c) ascii.df$char <- rawtochar(ascii.df$hex, multiple = TRUE) ascii.df[66:91, ] hex bin char 65 41 01000001 A 66 42 01000010 B 67 43 01000011 C 68 44 01000100 D 69 45 01000101 E 70 46 01000110 F 71 47 01000111 G 72 48 01001000 H 73 49 01001001 I 74 4a 01001010 J 75 4b 01001011 K 76 4c 01001100 L 77 4d 01001101 M 78 4e 01001110 N 79 4f 01001111 O 80 50 01010000 P 81 51 01010001 Q 82 52 01010010 R 83 53 01010011 S 84 54 01010100 T 85 55 01010101 U 86 56 01010110 V 87 57 01010111 W 88 58 01011000 X 89 59 01011001 Y 90 5a 01011010 Z 4.2 Importation des données Importer les données sous sous la forme de bits. Il n y a pas de séparateur entre les bits dans le fichier, on utilise donc la fonction read.fwf(). dalle <- read.fwf(file = "http://pbil.univ-lyon1.fr/r/donnees/dalle.txt", width = rep(1, 8)) dalle V1 V2 V3 V4 V5 V6 V7 V8 1 0 1 0 1 0 0 1 1 2 0 1 0 1 0 1 0 1 3 0 1 0 1 0 0 1 0 4 0 0 1 0 0 0 0 0 5 0 1 0 0 1 1 0 0 6 0 1 0 0 0 1 0 1 7 0 1 0 1 0 0 1 1 8 0 0 1 0 0 0 0 0 9 0 1 0 1 0 1 0 0 10 0 1 0 1 0 0 1 0 11 0 1 0 0 0 0 0 1 12 0 1 0 0 0 0 1 1 13 0 1 0 0 0 1 0 1 14 0 1 0 1 0 0 1 1 15 0 0 1 0 0 0 0 0 16 0 1 0 0 0 1 0 0 3 Acronyme pour American Standard Code for Information Interchange. Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 6/9 Compilé le 2008-08-19

17 0 1 0 0 0 1 0 1 18 0 0 1 0 0 0 0 0 19 0 1 0 0 1 1 0 0 20 0 1 0 0 0 0 0 1 21 0 0 1 0 0 0 0 0 22 0 1 0 1 0 1 1 0 23 1 1 0 0 1 0 0 1 24 0 1 0 1 0 0 1 0 25 0 1 0 0 1 0 0 1 26 0 1 0 1 0 1 0 0 27 1 1 0 0 1 0 0 1 28 0 0 1 0 0 0 0 0 29 0 0 1 0 1 1 1 0 30 0 0 1 0 1 1 1 0 31 0 0 1 0 1 1 1 0 Notez que lignes commençant par le caractère sont considérées par défaut comme des lignes de commentaires et ne sont pas importées. colsums(dalle) V1 V2 V3 V4 V5 V6 V7 V8 2 22 9 10 8 13 11 13 On note la présence de bits non nuls aux deux extrémités, ce n est donc pas un simple code ASCII. 4.3 Conversions du binaire en octets On se sait pas si on a une version grand-boutiens ou petit-boutiens des octets, on conserve les deux. dalle <- read.fwf(file = "http://pbil.univ-lyon1.fr/r/donnees/dalle.txt", width = rep(1, 8)) dalle$rawgb <- apply(dalle[, 1:8], 1, packbits) dalle$rawpb <- apply(dalle[, 1:8], 1, function(x) packbits(rev(x))) dalle V1 V2 V3 V4 V5 V6 V7 V8 rawgb rawpb 1 0 1 0 1 0 0 1 1 ca 53 2 0 1 0 1 0 1 0 1 aa 55 3 0 1 0 1 0 0 1 0 4a 52 4 0 0 1 0 0 0 0 0 04 20 5 0 1 0 0 1 1 0 0 32 4c 6 0 1 0 0 0 1 0 1 a2 45 7 0 1 0 1 0 0 1 1 ca 53 8 0 0 1 0 0 0 0 0 04 20 9 0 1 0 1 0 1 0 0 2a 54 10 0 1 0 1 0 0 1 0 4a 52 11 0 1 0 0 0 0 0 1 82 41 12 0 1 0 0 0 0 1 1 c2 43 13 0 1 0 0 0 1 0 1 a2 45 14 0 1 0 1 0 0 1 1 ca 53 15 0 0 1 0 0 0 0 0 04 20 16 0 1 0 0 0 1 0 0 22 44 17 0 1 0 0 0 1 0 1 a2 45 18 0 0 1 0 0 0 0 0 04 20 19 0 1 0 0 1 1 0 0 32 4c 20 0 1 0 0 0 0 0 1 82 41 21 0 0 1 0 0 0 0 0 04 20 22 0 1 0 1 0 1 1 0 6a 56 23 1 1 0 0 1 0 0 1 93 c9 24 0 1 0 1 0 0 1 0 4a 52 25 0 1 0 0 1 0 0 1 92 49 26 0 1 0 1 0 1 0 0 2a 54 27 1 1 0 0 1 0 0 1 93 c9 28 0 0 1 0 0 0 0 0 04 20 29 0 0 1 0 1 1 1 0 74 2e 30 0 0 1 0 1 1 1 0 74 2e 31 0 0 1 0 1 1 1 0 74 2e Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 7/9 Compilé le 2008-08-19

4.4 Conversion des octets en ASCII On regarde la version gros-boutiens et petit-boutiens des codes ASCI correspondant. dalle$chargb <- rawtochar(dalle$rawgb, multiple = TRUE) dalle$charpb <- rawtochar(dalle$rawpb, multiple = TRUE) dalle V1 V2 V3 V4 V5 V6 V7 V8 rawgb rawpb chargb charpb 1 0 1 0 1 0 0 1 1 ca 53 \xca S 2 0 1 0 1 0 1 0 1 aa 55 \xaa U 3 0 1 0 1 0 0 1 0 4a 52 J R 4 0 0 1 0 0 0 0 0 04 20 \004 5 0 1 0 0 1 1 0 0 32 4c 2 L 6 0 1 0 0 0 1 0 1 a2 45 \xa2 E 7 0 1 0 1 0 0 1 1 ca 53 \xca S 8 0 0 1 0 0 0 0 0 04 20 \004 9 0 1 0 1 0 1 0 0 2a 54 * T 10 0 1 0 1 0 0 1 0 4a 52 J R 11 0 1 0 0 0 0 0 1 82 41 \x82 A 12 0 1 0 0 0 0 1 1 c2 43 \xc2 C 13 0 1 0 0 0 1 0 1 a2 45 \xa2 E 14 0 1 0 1 0 0 1 1 ca 53 \xca S 15 0 0 1 0 0 0 0 0 04 20 \004 16 0 1 0 0 0 1 0 0 22 44 " D 17 0 1 0 0 0 1 0 1 a2 45 \xa2 E 18 0 0 1 0 0 0 0 0 04 20 \004 19 0 1 0 0 1 1 0 0 32 4c 2 L 20 0 1 0 0 0 0 0 1 82 41 \x82 A 21 0 0 1 0 0 0 0 0 04 20 \004 22 0 1 0 1 0 1 1 0 6a 56 j V 23 1 1 0 0 1 0 0 1 93 c9 \x93 \xc9 24 0 1 0 1 0 0 1 0 4a 52 J R 25 0 1 0 0 1 0 0 1 92 49 \x92 I 26 0 1 0 1 0 1 0 0 2a 54 * T 27 1 1 0 0 1 0 0 1 93 c9 \x93 \xc9 28 0 0 1 0 0 0 0 0 04 20 \004 29 0 0 1 0 1 1 1 0 74 2e t. 30 0 0 1 0 1 1 1 0 74 2e t. 31 0 0 1 0 1 1 1 0 74 2e t. C est visiblement la version petit-boutiens qui a été utilisée ici, mais il reste un problème d encodage. 4.5 Conversion en latin-1 n est pas limité au code ASCII. On essaye en latin-1 4 pour voir. dalle$latin1 <- dalle$charpb Encoding(dalle$latin1) <- "latin1" dalle V1 V2 V3 V4 V5 V6 V7 V8 rawgb rawpb chargb charpb latin1 1 0 1 0 1 0 0 1 1 ca 53 \xca S S 2 0 1 0 1 0 1 0 1 aa 55 \xaa U U 3 0 1 0 1 0 0 1 0 4a 52 J R R 4 0 0 1 0 0 0 0 0 04 20 \004 5 0 1 0 0 1 1 0 0 32 4c 2 L L 6 0 1 0 0 0 1 0 1 a2 45 \xa2 E E 7 0 1 0 1 0 0 1 1 ca 53 \xca S S 8 0 0 1 0 0 0 0 0 04 20 \004 9 0 1 0 1 0 1 0 0 2a 54 * T T 10 0 1 0 1 0 0 1 0 4a 52 J R R 11 0 1 0 0 0 0 0 1 82 41 \x82 A A 12 0 1 0 0 0 0 1 1 c2 43 \xc2 C C 13 0 1 0 0 0 1 0 1 a2 45 \xa2 E E 14 0 1 0 1 0 0 1 1 ca 53 \xca S S 15 0 0 1 0 0 0 0 0 04 20 \004 16 0 1 0 0 0 1 0 0 22 44 " D D 17 0 1 0 0 0 1 0 1 a2 45 \xa2 E E 18 0 0 1 0 0 0 0 0 04 20 \004 19 0 1 0 0 1 1 0 0 32 4c 2 L L 20 0 1 0 0 0 0 0 1 82 41 \x82 A A 4 ISO/CEI 8859-1 Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 8/9 Compilé le 2008-08-19

21 0 0 1 0 0 0 0 0 04 20 \004 22 0 1 0 1 0 1 1 0 6a 56 j V V 23 1 1 0 0 1 0 0 1 93 c9 \x93 \xc9 É 24 0 1 0 1 0 0 1 0 4a 52 J R R 25 0 1 0 0 1 0 0 1 92 49 \x92 I I 26 0 1 0 1 0 1 0 0 2a 54 * T T 27 1 1 0 0 1 0 0 1 93 c9 \x93 \xc9 É 28 0 0 1 0 0 0 0 0 04 20 \004 29 0 0 1 0 1 1 1 0 74 2e t.. 30 0 0 1 0 1 1 1 0 74 2e t.. 31 0 0 1 0 1 1 1 0 74 2e t.. Le mystère des dalles en bronze est maintenant résolu. Le visiteur qui pénètre dans l enceinte du site du service central de l INPS et du LPS de Lyon à Écully posera ses pieds SUR LES TRACES DE LA VÉRITÉ... Logiciel R version 2.7.1 (2008-06-23) for6.rnw Page 9/9 Compilé le 2008-08-19