bonjour,

voici mon soucis.
J'ai un fichier crée par un programme, il a sa propre extension (.mdp).
Le programme en question stock des informations fournies par une sonde .
On a 2 type de données :

-les données qui caractérise le survey (nom du projet, nombre de stations etc ...)
toutes ces infos sont lisible dans une fichier texte
--MDL data boundary
Content-type: text/xml; charset=utf-8; boundary="MDL data boundary"
<project sites="1">
<GUID>def5020f-4953-40dc-8a29-6a1925cb58f3</GUID>
<name>faches sd308</name>
<absoluteProjectBasePath></absoluteProjectBasePath>
<jobName></jobName>
<notes></notes>
<siteGUID>2a8f4b43-bfd1-4729-9e6b-c2a80f8d5452</siteGUID>
</project>
--MDL data boundary
Content-type: text/xml; charset=utf-8; boundary="MDL data boundary"

<site stations="1">
<GUID>2a8f4b43-bfd1-4729-9e6b-c2a80f8d5452</GUID>
<name>Site 1</name>
<client></client>
<address></address>
<magneticDeviation>0</magneticDeviation>
<metricType>Metres</metricType>
<coordinateType>ENZ</coordinateType>
<grid>NotSet</grid>
<stationGUID>e7bbfbac-f26e-4753-9593-3a73ef996802</stationGUID>
<deploymentGUID>40b31c90-67fc-4fee-a687-84ef1d6a034a</deploymentGUID>
</site>
-et on a les données enregistrées par la sonde
dans le logiciel, c'est lisible sous forme de tableau avec X, Y, Z ...)
dans le fichier texte, ça donne ça :
</station>
--MDL data boundary
Content-type: application/octet-stream; boundary="MDL data boundary"
MDLScanData z¼¢¸ê DI´±Oã†
ÀCALS_Ring_01 ÿWóCRE¹h@í*. q*'/eÂ’A³‡ånïVÀäCALS 1 ü©ñÒMbP?ü©ñÒMbP?ü©ñÒMbP?Fr‰
m(@ÌÈuå3÷&Àµo<Ä‚À³ÓB/þ4p@΂cîcØ`À¾¥å,‚ÀlÿÜÚuŒ‚À.s߶¯^@+ì¿M¶öqÀ#ýÿÿ³4 ”Þÿÿl ’þÿÿ´4 ”Þÿÿv …< ©Þÿÿr p œ8 ŸÞÿÿw ç k@ ´Þÿÿy Q š8 ŸÞÿÿx  Å0 ŠÞÿÿˆ â í( uÞÿÿ” u *4 ”Þÿÿ‘ / Å, Þÿÿ‘ Á Ž4 ”Þÿÿ‚ D n8 ŸÞÿÿw
 v4 ”Þÿÿ  Î$ jÞÿÿ‡ " 2< ©ÞÿÿŠ ¨ f0 ŠÞÿÿ† W )8 ŸÞÿÿ} Ç 8 ŸÞÿÿu \ ö; ©Þÿÿp € 4 ”Þÿÿk ï 4 ”Þÿÿl 4" 0 ŠÞÿÿi u# , Þÿÿc ì% 0$ jÞÿÿc „' ( uÞÿÿh »(
$ jÞÿÿi î)   `Þÿÿk ‰+ ç# jÞÿÿk ¹, í `Þÿÿr . Ù `Þÿÿt ¬0 È UÞÿÿu Ð1 Ì KÞÿÿy ò2 Ð @Þÿÿu 5 j `Þÿÿr ~6 R `Þÿÿq 7 ‰ @Þÿÿp : < KÞÿÿm ›: r  +Þÿÿm Ý<  KÞÿÿn ?> ë
vu qu'il est marqué application/octet-stream
je suis parti sur les moyens de lire du binaire, et c'est là qu'est mon problème :/

je n'arrive a pas transformer ce charabia en quelque chose de cohérent.

en fin de fichier j'ai un truc comme ça : <index numberOfEntries="18">
<entry>
<type>Project</type>
<fileId>0</fileId>
<location>221</location>
<size>343</size>
</entry>
<entry>
<type>Site</type>
<fileId>0</fileId>
<location>587</location>
<size>501</size>
</entry>
<entry>
<type>Deployment</type>
<fileId>0</fileId>
<location>1111</location>
<size>1464</size>
</entry>
<entry>
<type>Station</type>
<fileId>0</fileId>
<location>2598</location>
<size>757</size>
</entry>
<entry>
<type>Station</type>
<fileId>0</fileId>
<location>3378</location>
<size>757</size>
</entry>
....
<type>ScanReport</type>
<fileId>0</fileId>
<location>4005722</location>
<size>199</size>
</entry>
</index>
sachant que la longueur de mon reader 4008295 et que dans le fichier j'ai un 4005722 qui ressort, je me dit que ça doit bien est du binaire
Si on s'amuse a faire la différence entre la "<location>" + le "<size>" de tous les "<type>" on a toujours 23 (je sais pas si ça peut aider, mais ça montre une structure)
voici le bout de code que j'ai pondu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 using (BinaryReader b = new BinaryReader(File.Open("C:\\Cavity Profiler Projects\\CALS\\faches sd308\\faches sd308-horizonral.bak", FileMode.Open,FileAccess.Read )))
            {
 
 
                b.BaseStream.Position = 10003;
 
                // 2A.
                // Use BaseStream.
                int length = (int)b.BaseStream.Length;
                while (b.BaseStream.Position < length)
                {
 
                    //var v = b.ReadString();
                    var u = b.BaseStream.ReadByte();
                    Console.WriteLine(u);
 
                }
            }
quand on est sur du texte cohérent, si je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 Console.WriteLine(Convert.tochar(u));
j'ai bien le bon texte qui apparait comme par magie,
mais pour le reste, j'ai essayé en double, single, etc ... rien a faire ...

si quelqu'un a une idée