1

cpxSR2bnPUihaNxIFFA8Sc + 8gUnWuJxJi8ywSW5ju0npWrFJHW2MSZAeMklcZ71IjrBySF2ci0gdecRI0vD / SM4ZF0m1ZSJJBY8bSZJl / 0intaxIlQJBSPdY3EdBLM9Hp4wLSOK8Nki8L1pIoglxSAvNbkjHg0VIDlv7R6B2Y0elCqVGFWuVRgagAkdxHTdHELxRR9i2VkdyEUlHU84kRzTS2kalKFxG

これは私の質量分析計からのXMLファイルからの文字列です。このような2つのファイルをロードし、あるセットの値を別のセットから減算して、結果を新しいファイルに書き込むプログラムを作成しようとしています。.mzML形式の仕様ファイルによると、数値データのエンコードはbase64であるとされています。多くのオンラインbase64コンバーターを使用したり、NotepaD ++とMIMEツールキットのbase64コンバーターを使用したりして、このデータ文字列を読みやすいものに変換することはできません。

結果ファイルのコンテキストでの文字列は、次のようになります。

     <binaryDataArray encodedLength="224">
        <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>cpxSR2bnPUihaNxIFFA8Sc+8gUnWuJxJi8ywSW5ju0npWrFJHW2MSZAeMklcZ71IjrBySF2ci0gdecRI0vD/SM4ZF0m1ZSJJBY8bSZJl/0intaxIlQJBSPdY3EdBLM9Hp4wLSOK8Nki8L1pIoglxSAvNbkjHg0VIDlv7R6B2Y0elCqVGFWuVRgagAkdxHTdHELxRR9i2VkdyEUlHU84kRzTS2kalKFxG</binary>

このエンコーディングがどのような形式であるかを理解できるまで、先に進むことはできません。

返信をよろしくお願いします。

4

3 に答える 3

5

この簡単なプログラムを使用して、プレーンテキストに変換できます。

#include <stdio.h>
int main(void)
{
    float f;
    while (fread(&f, 1, 4, stdin) == 4)
        printf("%f\n", f);
}

これを「floatdecode」にコンパイルし、次のコマンドを使用しました。

echo "cpxSR2bnPUihaNxIFFA8Sc+8gUnWuJxJi8ywSW5ju0npWrFJHW2MSZAeMklcZ71IjrBySF2ci0gdecRI0vD/SM4ZF0m1ZSJJBY8bSZJl/0intaxIlQJBSPdY3EdBLM9Hp4wLSOK8Nki8L1pIoglxSAvNbkjHg0VIDlv7R6B2Y0elCqVGFWuVRgagAkdxHTdHELxRR9i2VkdyEUlHU84kRzTS2kalKFxG" | base64 -d | ./floatdecode 

出力は次のとおりです。

53916.445312
194461.593750
451397.031250
771329.250000
1062809.875000
1283866.750000
1448337.375000
1535085.750000
1452893.125000
1150371.625000
729577.000000
387898.875000
248514.218750
285922.906250
402376.906250
524166.562500
618908.875000
665179.312500
637168.312500
523052.562500
353709.218750
197642.328125
112817.929688
106072.507812
142898.609375
187123.531250
223422.937500
246822.531250
244532.171875
202255.109375
128694.109375
58230.625000
21125.322266
19125.541016
33440.023438
46877.441406
53692.062500
54966.843750
51473.445312
42190.324219
28009.101562
14090.161133
于 2013-01-25T02:30:56.067 に答える
0

mzML ファイルへの Python インターフェイスであるpymzMLを介して、 Pythonの mzML ファイルからそのようなデータにアクセスできます。

http://pymzml.github.com/

于 2013-09-17T18:39:06.477 に答える
0

必要に応じて解凍するオプションを備えた、さらに別の Java Base64 デコード
ベンダーの仕様では、「32 ビット フロート」 = IEEE-754 と示され、リトル エンディアンが指定されています。
シュミットのコンバーターは、IEEE-754 のビット パターンを示しています。

16 進コードを確認するためのもう 1 つの Notepad++ ステップ:

Notepad++ TextFX プラグイン (すでに行った Base64 デコードの後)
テキスト
TextFX > TextFX Convert > Convert text to Hex-32 を 選択します。

16 進コードを確認できます。

"000000000 72 9C 52 47 66 E7 3D 48- ... 6E 63 BB 49 |rœRGfç=H¡hÜHP

リトルエンディアン: 47529C72 は、David が上に示したように (Schmidt 経由で) 変換します。

于 2013-01-25T04:14:44.037 に答える