cpxSR2bnPUihaNxIFFA8Sc + 8gUnWuJxJi8ywSW5ju0npWrFJHW2MSZAeMklcZ71IjrBySF2ci0gdecRI0vD / SM4ZF0m1ZSJJBY8bSZJl / 0intaxIlQJBSPdY3EdBLM9Hp4wLSOK8Nki8L1pIoglxSAvNbkjHg0VIDlv7R6B2Y0elCqVGFWuVRgagAkdxHTdHELxRR9i2VkdyEUlHU84kRzTS2kalKFxG
这是来自质谱仪的XML文件中的字符串。我正在尝试编写一个程序来加载两个这样的文件,从另一个文件中减去一组值,并将结果写入一个新文件。根据{{3}},数字数据的编码据称为the specification file for the .mzML format。我无法使用许多在线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>
我无法继续,直到我能弄清楚这种编码的格式是什么!
提前感谢您的回复。
答案 0 :(得分: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
答案 1 :(得分:0)
Yet another Java Base64 decode with options to uncompress should you need it。
供应商规范表明“32位浮点数”= IEEE-754并指定了小端
Schmidt's converter显示IEEE-754的位模式。
再看一下Notepad ++步骤来查看十六进制代码:
Notepad ++ TextFX插件(在你做过的Base64解码之后)
选择文字
TextFX&gt; TextFX转换&gt;将文本转换为Hex-32
让你看一下十六进制代码:
“000000000 72 9C 52 47 66 E7 3D 48- ... 6E 63 BB 49 |rœRGfç=H¡hÜHP
Little-endian:47529C72转换(通过Schmidt),如上所示David。
答案 2 :(得分:0)
您可以通过 Python 中的mzML文件,通过 pymzML 访问此类数据,这是一个mzML文件的python接口。