ich hatte gestern abend schon einen Thread dazu geöffnet (ich kann da irgendwie nicht mehr drauf antworten jetzt). Danke Tino und Luc für die Antworten. Der Code von Tino funktioniert, berücksichtigt aber das Vorzeichen nicht. Soweit ich weiß, ist ja das erste bit einer Double ein Vorzeichenbit, danach der Exponent (genaue Kodierung kenn ich leider nicht.
Darf ich nochmal erweitert fragen? Ich habe ein XML file, genauer ein mzML-file, das massenspektrometrische Daten enthält mit x/y-Daten. X sind Massen (64 bit), Y sind Intensitäten (32 bit). Die Daten sind binär kodiert in zwei Arrays (siehe unten - ich habe alle "" im Code ersetzt mit eckigen Klammern, damit das hier dargestellt wird). In fett sind die Daten kodiert. Ganz unten habe ich das rausgesucht, was hier eigentlich rauskommen muss (4 x/y-Paare) aber ich komme nicht von dem String auf die richtigen Zahlen. Hat hier eine Idee?
[binaryDataArrayList count="2"]
[binaryDataArray encodedLength="44"]
[cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" /]
[cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" /]
[cvParam cvRef="MS" accession="MS:1000576" name="no compression" /]
[binary]AAAAgMbLi0AAAABAM+OLQAAAAGCy64tAAAAAoHMjjEA=[/binary]
[/binaryDataArray]
[binaryDataArray encodedLength="24"]
[cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of counts" unitCvRef="MS"/]
[cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" /]
[cvParam cvRef="MS" accession="MS:1000576" name="no compression" /]
[binary]Wo5rQ7bvCUR6nm5DK6WIQw==[/binary]
[/binaryDataArray]
[/binaryDataArrayList]
Ergebnis, was rauskommen muss:
First array (m/z) Second array (Intensity)
889.471923828 ---- 235.556060791
892.400024414 ---- 551.745483398
893.462097168 ---- 238.619049072
900.43145752 ---- 273.290374756