Search code examples
c#xmlsiemensbase85

Decode Siemens AST data from downloaded XML file


For a project I have to read the Automatic Servo Tuning (AST) data and display the tuning data graphs for reporting on the machine. The XML is auto generated by the system and I am simply trying to decode the raw CDATA tag into an array of doubles. The XML says it is base85 encoded and I have tried online tools as well as nuget packages to decode the text.

So far I have only managed to translate into gibbrish. The forced binary to double BitConverter.ToDouble() method yields wildly fluctuating values which I know are not exactly correct.

How can I decode this data into a list of doubles? Below is a sample array from the XML file. This is supposed to be the sampling frequencies so I think they may be in a sorted order (if this helps).

<NumericArray satclassid="4" elementtype="double" format="base85" name="m_FrequencyVector" ver="4.8.5.0.3" env="1">
                                <unsigned_int name="m_length">1022</unsigned_int>
                                <raw name="m_pNumberArray">
                                    <![CDATA[
kI]nm*9lJ3kKRyC*9lJ3kLGJr/TtW3kMsJS*9lJ3kM)d:;z@m2kNhUH/TtW3kNRee+=*93kO3U-*9lJ3kOoKixet}2kOGp3;z@m2kOY3=vx*y2kO[)X/TtW3kPaKJtRl-2kPspu+=*93kPK4gr:Yl2kP#*1*9lJ3kP?)~d3NsIkP~Vyxet}2kQ8K+RpaQIkQhAj;z@m2
kQqpTbn2$IkQzf5vx*y2kQI4EPIN3JkQQ]?/TtW3kQZ*q9GFfIkQ-VZtRl-2kQ^LbN$2DJkR3AK+=*93kRcp|7Z^PJkRlfwr:Yl2kRu4)L}E?JkRC^h*9lJ3kRKF|Ia17nkRO^fd3NsIkRTvw$k(Z(kRX*Oxet}2kR$k*27]jnkR*W0RpaQIkR;aimiW;`kR[Lz;z@m2
kR{~RGtDHnkS1A/bn2$IkS5=3!Ekc(kSaqlvx*y2kSe#D0rvTnkSjfUPIN3JkSnQ=kCco(kSs56/TtW3kSwGoEM[^nkSA^G9GFfIkSFvXYXWM(kSJ*[tRl-2kSOl9_-DiokSSWrN$2DJkSXaJiVOY(kS#L!+=*93kS)~_C*vuokS:Bd7Z^PJkS@=uW^b~(kS{qMr:Yl2
kT0#`^4[SokT5f}L}E?JkT9Rgg[4b(kTe5x*9lJ3kTiGPB2+(okTlRdIa17nkTn/$+Z9(ykTq5vd3NsIkTsn|CSW2TkTuGM$k(Z(kTwZf7Mln@kTy^(xet}2kTBdwW`CVdkTDv~27]jnkTFOOrX1]xkTH+gRpaQIkTK2)]@jqTkTMlymiW;`kTOE0L+)L@kTQWP;z@m2
kTS[ig#u+ckTVa+GtDHnkTXtz)_MhykTZM2bn2$IkT#(RA=bCTkT(0j!Ekc(kT*i/5)XX@kT-BBvx*y2kT:U3U~[8dkT==T0rvTnkT[8lp]EtykT^q:PIN3JkT{JC[aV!UkT}$5kCco(kU0|UK4k}[kU3gm/TtW3kU5y=e|+kckU7REEM[^nkU9:6(f1RykUc5W9GFfI
kUeooz8N=TkUgG?YXWM(kUiZG42da@kUk_8tRl-2kUndXTjuIdkUpwp_-DiokUrO[oc]`ykUt+HN$2DJkUw39?ubdUkUylZiVOY(kUAErInXy[kUCW]+=*93kUE[JdhmUdkUHbbC*vuokUJt!$yE4zkULMt7Z^PJkUN(_xs3pUkUQ0KW^b~(kUSjd2lPK@kUUB$r:Yl2
kUWUuRC*_dkUY={^4[SokU#8MmwwgykU`reL}E?JkU)J`;NNNUkU+$wg[4b(kU/|}GHc-[kU=gN*9lJ3kU@zgbAZ7dkU]R)B2+(okU_T3:C(qikU{$tIa17nkU|;Tf(k;skU}|_+Z9(ykV07lFwtLDkV1gLd3NsIkV2p:(}ClOkV3zdCSW2TkV4IDap[*YkV5R$$k(Z(
kV6#5z[1G/kV7:v7Mln@kV8{UZHag|kVa5|xet}2kVbfn4-N$7kVcoMW`CVdkVdx=uAWCikVeHf27]jnkVfQEU2)ctkVgZ(rX1]xkVh/6{R?/DkVi_wRpaQIkVk4Wo{uxNkVld}]@jqTkVmnoOLD7YkVnwOmiW;`kVoF?@dL(/kVpPgL+)L@kVqYGjF2s{kVr+);z@m2
kVs^8J7b37kVu3yg#u+ckVvcX-Wj!ikVwm0GtDHnkVxvqe0XoskVyEP)_MhykVzN[DP)}DkVAXibn2$IkVB*H`h@VOkVC[+A=bCTkVE2a8JvjYkVFbz!Ekc(kVGkZybD]/kVHu25)XX@kVIDrX!MQ|kVJMRvx*y2kVKV^353f7kVL)jU~[8dkVM@JsUb=ikVO0/0rvTn
kVPabSmkMtkVQjBp]EtykVRs!^;tmEkVSC3PIN3JkVTLtnf*+OkVUUS[aV!UkVV`_M([HZkVW?lkCco(kVX~K=x1h:kVZ8:K4k}[kV!idhYE$|kV#rC/TtW3kV$A$HqND7kV`K5e|+kckV(Tu*[WdikV)$UEM[^nkV*;|ckcYskV+}m(f1RykV/7MB/lyDkV:g=9GFfI
kV;qe#Bu8OkV=zEz8N=TkV?I(6$+TYkV@S6YXWM(kV[#wwu]t/kV]:W42da@kV^{}V|23|kV{6otRl-2kV|fO1oFP7kV}o?TjuIdkV~ygq?OpikW0HF_-DiokW1Q)QFW~tkW2!8oc]`ykW3/x]7)WEkW4_XN$2DJkW650lzmkOkW7ep?ubdUkW8nPL1u^ZkW9w[iVOY(
kWaGh:QDR:kWbPHInXy[kWcY+f^^f|kWd-9+=*93kWe^zFK2?8kWg3ZdhmUdkWhd1)cbNjkWimrC*vuokWjvRaDPbtkWkE]$yE4zkWlOjA5X-EkWmXJ7Z^PJkWn*-ZU*IPkWo]bxs3pUkWq2B4~n6YkWrb!W^b~(kWsl3uOv`/kWtut2lPK@kWuDSUgED|kWvM_r:Yl2
kWwWk{)Ne8kWx)KRC*_dkWy@:pa3ZikWA1c^4[SokWBaCOZcztkWCj$mwwgykWDt4@rl9EkWECuL}E?JkWFLUjSYUOkWGU{;NNNUkWH(mJk+uZkWI?Mg[4b(kWJ~;-/]4:kWL9eGHc-[kWMiEeewP|kWNr`*9lJ3kWOB6D`Fq8kWPKwbAZ7dkWQTV`vO0jkWR$}B2+(o
kWS=o8X4LtkWT(j:C(qikWUswWoxXkkWU?JIa17nkWVBWt_REpkWV~/f(k;skWWK~1P;lukWX9b+Z9(ykWXUoTK!eAkWYiBFwtLDkWY`Orh{_FkWZr#d3NsIkWZ=?{c-;LkW!B3(}ClOkW!~gQ+5SQkW#KtCSW2TkW$8GoEpzVkW$TTap[*YkW`h)]zes#kW`$_$k(Z(
kW(r8O6y9*kW(=lz[1G/kW)Ayl!R?;kW)}L7Mln@kW*JX?VG*^kW+7:ZHag|kW+T0Ls!N~kW-hdxet}2kW-$qi~|v4kW/qD4-N$7kW/;P:^/oakW:z$W`CVdkW:|[IP65fkW;J5uAWCikW=7igmp/kkW=Sv27]jnkW?gH-he$qkW?#UU2)ctkW@p+F;yJvkW@:|rX1]x
kW[zadISqAkW[|m{R?/DkW]Iz)DHjGkW^6MRpaQIkW^RZDa#0LkW_f=o{uxNkW_#2a(|(QkW{pe]@jqTkW{:r$Z/XWkW|yEOLD7YkW|{RAx6E#kW}H(miW;`kW~5^84ql*kW~R6@dL(/kX0fjZ~fe=kX0!wL+)L@kX1oJxTy_^kX1/WjF2s{kX2x/5qSZ~kX2_};z@m2
kX3HbXlHT5kX45oJ7b37kX4QBu[#AakX5eOg#u+ckX5Z#2M}hfkX6n?-Wj!ikX6/3UH:alkX7xgGtDHnkX7_tsf6@qkX8GGe0XoskX94S|9_+wkX9P))_MhykXad_R(fOBkXaZ8DP)}DkXbnlpBzvGkXb-ybn2$IkXcwK^wooMkXc^X`h@VOkXdF:P3I5RkXe40A=bCT
kXePdmX#/WkXfdq8JvjYkXfYC@SQ$#kXgmP!Ekc(kXg+$Mp:J*kXhv[ybD]/kXh^5j|7q;kXiFi5)XX@kXj3u;@{j^kXjOHX!MQ|kXkcUJMg0~kXkX+vx*y2kXll|hjz)4kXl+a353f7kXmvm/eoYakXm]zU~[8dkXnEMG-IFfkXo2ZsUb=ikXoN=eF$mkkXpc20rvTn
kXpXe*ARfqkXqlrSmkMtkXq*EE7:{vkXruRp]EtykXr[(b$7!AkXsD]^;tmEkXt26`W{TGkXtNjPIN3JkXubwBugALkXuWJnf*+OkXvkW91AhQkXv)-[aV!UkXwt}!{paWkXw[bM([HZkXxDoyQI@#kXy1BkCco(kXyMO6n$V*kXza!=x1h:kXzV?YiRO=kXAk3K4k}[
kXA)gv=;v^kXBtthYE$|kXB@G3K8c~kXCCS/TtW3kXD0)VE|65kXDL_HqND7kXEa8tcg:akXEVle|+kckXFjy0*ARfkXF(K*[WdikXGsXS#pKlkXG?:EM[^nkXHC0qyJrqkXI0dckcYskXILp_tykwkXJ9C(f1RykXJUPQ0S1BkXKi$B/lyDkXK`[nU;)GkXLs59GFfI
kXL?h[P!YMkXMBu#Bu8OkXM~HNm|FRkXNKUz8N=TkXO8+k^hmWkXOT|6$+TYkXPi9==6f$kXP`mYXWM(kXQrzKJp{+kXQ=Mwu]t/kXRAZigJ!=kXR}=42da@kXSK1:byT_kXT8eV|23|kXTTrH)SB0kXUhEtRl-2kXU$RfC=i5kXVq(1oFP7kXV;]+x#bbkXWA6TjuId
kXW}jF4|[gkXXJwq?OpikXY7JcZhWlkXYSV_-DiokXZg-(U6PrkXZ#}QFW~tkX!qbCrqwvkX!;ooc]`ykX#zB9}KdAkX#|N]7)WEkX$I!#]z6GkX`6?N$2DJkX`S3zNS:LkX(gglzmkOkX(#t7k=RQkX)pF?ubdUkX):SZf#KWkX*y)L1u^ZkX*{_w/}r#kX+I8iVOY(
kX-6l4Hi8*kX-Rx:QDR:kX/fKWC71=kX/!XInXy[kX:o:u9q)^kX::0f^^f|kX;yd1`KM~kX;{p+=*93kX=HCTYzG5kX?5PFK2?8kX?Q$rvTnakX@e[dhmUdkX@!4{qIggkX[oh)cbNjkX[/uQ|#|lkX]xHC*vuokX]_UoR}#qkX^G+aDPbtkX_4{]M:UwkX_Q9$yE4z
kX{emOk7BBkX{ZzA5X-EkX|nMl@riGkX|-Z7Z^PJkX}w;?/gbMkX}_1ZU*IPkX~GeLGz[RkY04rxs3pUkY0PEjdTWWkY1dR4~n6YkY1Y`;8IP$kY2m]W^b~(kY2-6I$$w+kY3wjuOv`/kY3^wgz~d=kY4FJ2lPK@kY53V-u;6_kY5O-UgED|kY6c}G27;0kY6Ybr:Yl2
kY7modWrS5kY7+A{)Ne8kY8vN)RgLbkY8]!RC*_dkY9E?DoAsgkYa33pa3ZikYaOga_U9lkYbcs^4[SokYbXF$?J2rkYclSOZcztkYc*)AK$*wkYdu_mwwgykYd]88h~NBkYeEk@rl9EkYf2x!c;GHkYfNKL}E?JkYgbXx+8nMkYgW:jSYUOkYhl05Es4RkYh*c;NNNU
kYiupXzg|XkYi[CJk+uZkYjDPv6A#$kYk1$g[4b(kYkM[2!UI+kYlb4-/]4:kYlWhUVJB?kYmkuGHc-[kYm)Hss`i_kYntUeewP|kYn@+.kYoC{*9lJ3kYp19R^;]5kYpMmD`Fq8kYqazpP8XakYqVMbAZ7dkYrjY^J|QgkYr(;`vO0jkYst1PhhxlkYs@eB2+(okYtC
rm;BeqkYu0E8X4LtkYuLQ@*q7wkYu[z:C(qikYvf~`vO0jkYvDMWoxXkkYv#cPhhxmkYw1ZIa17nkYwppB2+(okYwM=t_REpkYw:Cm;BerkYxb2f(k;skYxyP8X4LtkYxWf1P;lukYx{#@*q7xkYykr+Z9(ykYyH@!R]EzkYy)ETK!eAkYz64MDJ;CkYztRFwtLDkYzR
hypdlEkYz@(rh{_FkYAfuka`SHkYAC^d3NsIkYA!H5{x2JkYB16{c-;LkYBoT=5SLNkYBMj(}ClOkYB/*X@l_PkYCawQ+5SQkYCx{JZ=sSkYCVJCSW2TkYC{9vLFZUkYDjWoEpzVkYDHmhx99WkYD(/ap[*YkYE5z3iZGZkYEs}]zes#kYEQL/r}2$kYE@b$k(Z(kYFe
YVdOz)kYFCoO6y9*kYFZ;G~h*+kYG0Bz[1G/kYGo1s+-g:kYGLOl!R?;kYG/eeTBN=kYH9#7Mln@kYHxr0F4|[kYHU??VG*^kYH_D*OqG_kYIj3ZHag|kYIGQSz]?}kYI(gLs!N~kYJ4`ElKo0kYJstxet}2kYJP]q7dV3kYJ?Gi~|v4kYKe6b[(55kYKBT4-N$7kYKZ
i_22O9kYK~):^/oakYLnv`:S}bkYLK_W`CVdkYL-IPWmvekYM98IP65fkYMwVBH=$gkYMUluAWCikYM^-ntGcjkYNiygmp/kkYNF}9f9JlkYN`L27]jnkYO4a[ov5pkYOrX-he$qkYOPn#9}CrkYO=:U2)ctkYPdAM_O/ukYPB0F;yJvkYPYNy(ijwkYP~drX1]xkYQm
!kP-QzkYQKqdISqAkYQ+?6BC0BkYR8C{R?/DkYRw2=KXJFkYRTP)DHjGkYR^fYwq]HkYSh$RpaQIkYSFsKh^qKkYS$[Da#0LkYT3Fw3KXMkYTr5o{uxNkYTOSh=e7PkYT=ia(|(QkYUc)3X(ERkYUAu]@jqTkYUX^/+30VkYU}H$Z/XWkYVm7VSTxXkYVJUOLD7YkYV+
kHEm(!kYW7+Ax6E#kYWvxtp?e$kYWS|miW;`kYW]KfbGL)kYXha84ql*kYXEX0|9_+kYX$m@dL(/kYY2/+6vE;kYYqzZ~fe=kYYN~S@};?kYY;ML+)L@kYZccE!Pl]kYZzZxTy_^kYZXpqMiS_kYZ|=jF2s{kY!lCcx/2}kY!J25qSZ~kY!*O_H7M1kY#7e;z@m2kY#u
#(sX{3kY#SrXlHT5kY#[@Qert6kY$gEJ7b37kY$E4B~^!8kY$#Ru[#AakY`2hn-LabkY`p(g#u+ckY`Nu9UeHdkY`:^2M}hfkY(bG[`A3hkY(z6-Wj!ikY(WT#P3AjkY(|jUH:alkY)k*NAT+mkY)IwGtDHnkY)){zmnhokY*6Jsf6@qkY*u9l7?OrkY*RWe0XoskY*[
m6]G}tkY+f-|9_+wkY+Dy?2$HxkY+!})_MhykY-1LY;v@zkY-pbR(fOBkY-MYKW~oCkY-:oDP)}DkY/a;wIPVEkY/yBpBzvGkY/W1iuj5HkY/{Obn2$IkY:ke4f/CJkY:H!^wooMkY:)q:p7}NkY;5?`h@VOkY;tDWaYvPkY;R3P3I5RkY;@QH{r$SkY=fgA=bCTkY=C
`t(_cUkY=!tmX#/WkY?0]fQLJXkY?oG8JvjYkY?M61Ce]ZkY?/S@SQ$#kY@ai+LAC`kY@x)!Ekc(kY@VvTx3/)kY@__Mp:J*kY[jIFiUj-kY[H8ybD]/kY[(Vr4nQ:kY]5lj|7q;kY]s-c=@0?kY]Qy5)XX@kY]?|_~cJ]kY^eK;@{j^kY^Ca(+$]{kY^ZXX!MQ|kY_0
nQTwq}kY_n:JMg0~kY_LACE~Y1kY_/0vx*y2kY{9NoqQ83kY{xdhjz)4kY{U!acjF6kY{_q353f7kY|i=]lF19kY|GC/eoYakY|(2$78yckY}4PU~[8dkY}sfN[Y)ekY}P$G-IFfkY}?sz#sfhkY~d[sUb=ikY~BFlM_MjkY~Z5eF$mkkY~~S7yL{mkZ0ni0rvTnkZ0K
(?H+FpkZ0-u*ARfqkZ18^ZtA=skZ1wHSmkMtkZ1U7Lf4mukZ1^UE7:{vkZ2ikx0UTwkZ2F+p]EtykZ2`xi/o3zkZ33|b$7!AkZ3rK4U@ABkZ3P9^;tmEkZ3=W:(c{FkZ4dm`W{TGkZ4A/WP`tHkZ4YzPIN3JkZ4}~IBw!KkZ5mMBugALkZ5Kcun0aMkZ5+Znf*+OkZ68
pg8QHPkZ6v=91AhQkZ6TC1^j@RkZ6^1[aV!UkZ7hO-3FAVkZ7Fe!{paWkZ7$#T=8+XkZ83rM([HZkZ8q@FXZh!kZ8OEyQI@#kZ8=4rJsO$kZ9cRkCco(kZ9Ahdu_})kZ9X(6n$V*kZ9}t{EhH-kZal]=x1h:kZaJG)p+@;kZa+6YiRO=kZb7TRbBo?kZbvjK4k}[kZbS
*C|4V]kZb]wv=;v^kZcg{o)V5_kZcEJhYE$|kZc$9aRoC}kZd2W3K8c~kZdql]!J~1kZdN-/TtW3kZd;y$Mdw4kZeb}VE|65kZezLOx``6kZeXbHqND7kZe|YAjxd9kZflotcg:akZfI;m50KbkZf*Be|+kckZg717?Q^ekZguO0*ARfkZgSd?~=DhkZg[!*[WdikZhg
qZ-F:kkZhD?S#pKlkZh#DLU9kmkZi23EM[^nkZipQxFZRpkZiNgqyJrqkZi:`jrt1rkZjbtckcYskZjy]5c{yukZjWF_tykwkZj|5;mh^xkZkkS(f1RykZkIiX7-rAkZk))Q0S1BkZl6vI]BYCkZlt_B/lyDkZlRIu$58FkZl[8nU;)GkZmfVgNVFHkZmDl9GFfIkZm!
-2zo=KkZn1x[P!YMkZno|-IKyNkZnMK#Bu8OkZn:aUud)QkZoaXNm|FRkZoynGf(fSkZoV:z8N=TkZo{As1xMVkZpk0k^hmWkZpHNd:0{XkZp)d6$+TYkZq5Z{{mF!kZqtp==6f$kZqQ=)(==`kZq@CYXWM(kZrf2RQGm)kZrCPKJp{+kZr!fDC9T-kZs0$wu]t/kZso
spn!3:kZsL[igJ!=kZs/Fb9tA?kZta542da@kZtxR^iO{]kZtVh:byT_kZt_(`4it{kZujuV|23|kZuG^O=-!}kZu(HH)SB0kZv57AYCb1kZvsUtRl-2kZvQkmK5I3kZv?+fC=i5kZwex8vV[6kZwB|1oFP7kZwZJ@E^B9kZx09+x#bbkZxnW!qK-ckZxLmTjuIdkZx-
/MceiekZy9zF4|[gkZyw~x|(PhkZyUMq?OpikZy_cj*x~jkZziZcZhWlkZzGp5S1wmkZz`;_-DiokZA4B;#m[pkZAs1(U6PrkZAPOXM?pskZA?eQFW~tkZBd#JyGWukZBBrCrqwvkZBY@vka6xkZB~Eoc]`ykZCn4h5!DzkZCKR9}KdAkZC-h2@t:CkZD8`]7)WEkZDw
t/0PwFkZDT]#]z6GkZD^GU/i`IkZEi6N$2DJkZEFTGU/dKkZE`jzNS:LkZF3*sGCKNkZFrwlzmkOkZFO{es5^PkZF=J7k=RQkZGd90dWrSkZGAV?ubdUkZGYl*m^:VkZG}-Zf#KWkZHmyS8LkYkZHJ}L1u^ZkZH+LD^eR!kZI8bw/}r#kZIvYp$)1`kZIToiVOY(kZI]
;bOyy)kZJhB4Hi8*kZJF0^XT^/kZJ$N:QDR:kZK3d`Jnr;kZKq!WC71=kZKOqPu?Y@kZK;?InXy[kZLcDBgH8]kZLA3u9q)^kZLXQn2aF{kZL}gf^^f|kZMl`8:!=}kZMJt1`KM~kZM*[@{~z2kZN7F+=*93kZNv5!)P*4kZNSSTYzG5kZN]iMRjg6kZOg)FK2?8kZOE
vyC/N9kZO#_rvTnakZP2IkoC|bkZPq8dhmUdkZPNV6a6uekZP;k{qIggkZQb+=jr?hkZQzx)cbNjkZQW|Y4_nkkZQ|KQ|#|lkZRlaJ?LUmkZRIXC*vuokZR*nvZf4pkZS6:oR}#qkZSuAhK)BrkZSS0aDPbtkZS[N3wy-ukZTgc]M:UwkZTDZ/FUuxkZT#p$yE4zkZU1
=Vrn#AkZUpCOk7BBkZUN2Hc@bCkZU:PA5X-EkZVbfs}HIFkZVy$l@riGkZVWse+a[HkZV{[7Z^PJkZWkF0S#pKkZWI4?/gbMkZW)R*#~-NkZX6hZU*IPkZXt(SNQiQkZXRuLGz[RkZX@^EzjPSkZYfHxs3pUkZYD7qk/~VkZY!UjdTWWkZZ1kc6DwXkZZo+4~n6YkZZM
w_fY[#kZZ/{;8IP$kZ!aJ(1sp`kZ!y9W^b~(kZ!VWP/_W*kZ!{mI$$w+kZ#j/BVM6-kZ#HzuOv`/kZ#(~nHfD;kZ$5Mgz~d=kZ$tc9s):?kZ$QZ2lPK@kZ$@o[C4w^kZ`e;-u;6_kZ`CB#nU`{kZ`!1UgED|kZ(0ON9od~kZ(oeG27;0kZ(L#y^@L1kZ(/rr:Yl2kZ)9
@k`H_4kZ)xEdWrS5kZ)V46Pbs6kZ)_Q{)Ne8kZ*jg=Yw;akZ*G`)RgLbkZ*(tYK0lckZ+4]RC*_dkZ+sGKvQSfkZ+Q6DoAsgkZ+?Twhk2hkZ-ejpa3ZikZ-B*i2:zkkZ-Zwa_U9lkZ-~{3;D*mkZ/nI^4[SokZ/L8/|ZsqkZ/-V$?J2rkZ:9lV*sZskZ:w-OZcztkZ:U
yHR{9vkZ:^}AK$*wkZ;iLtDMGxkZ;GbmwwgykZ;`Yfpf?zkZ=4o8h~NBkZ=r;1a*nCkZ=PA@rl9EkZ=?0+k4*FkZ?dN!c;GHkZ?BdT5VgIkZ?Y!L}E?JkZ?~qE@oNKkZ@m?x+8nMkZ@KDqZ@|NkZ@-3jSYUOkZ[8QcLIuPkZ[wg5Es4RkZ[T$_U`?TkZ[^s;NNNUkZ]h
[(GxnVkZ]FFXzg|XkZ]`5Qs0UYkZ^3SJk+uZkZ^riCdR4!kZ^O)v6A#$kZ^=vn~kB`kZ_c_g[4b(kZ_AI9+:-)kZ_Y82!UI+kZ_}U[^9u/kZ{mk-/]4:kZ{J+#$Z#;kZ{+xUVJB?kZ|7|NOtb@kZ|vKGHc-[kZ|Tazz{I]kZ|]Xss`i_kZ}hnllM[{kZ}E:eewP|kZ}$
A77gp}kZ~30.
]]>
                                </raw>
                            </NumericArray>

I believe the system used to generate this XML is SINUMERIK 840D, although I have not been successful in obtaining any programming guide by Siemens that helps understand the AST data.


Solution

  • Not surprisingly, I found the answer just a day after posting. Adding it here just for reference to others.

    I found a Python repo on GitHub (link: Trace-Tools) which converts the base85 encoded data. It uses a custom character map from Siemens, which is why none of the standard converters worked.

    For C#, I also had some issues with big-endian conversion but that is not be a difficult problem to solve.