簡體   English   中英

SAS.Planet的Base64編碼

[英]Base64 encoding for SAS.Planet

SAS.Planet是用Delphi編寫的俄語軟件,用於從許多服務器(sasgis.org)下載衛星圖像。 很好,我經常使用它,但是如果我可以插入自己的數據會更好。 它將數據存儲在名為mark.sml的文件中,該文件基本上是xml文件。 一個例子是:

<?xml version="1.0" standalone="yes"?> 
<DATAPACKET Version="2.0"><METADATA><FIELDS>
<FIELD attrname="id" fieldtype="i4" readonly="true" SUBTYPE="Autoinc"/>
<FIELD attrname="name" fieldtype="string" WIDTH="255"/>
<FIELD attrname="descr" fieldtype="bin.hex" SUBTYPE="Text"/>
<FIELD attrname="scale1" fieldtype="i4"/><FIELD attrname="scale2" fieldtype="i4"/>
<FIELD attrname="lonlatarr" fieldtype="bin.hex" SUBTYPE="Binary"/>
<FIELD attrname="lonL" fieldtype="r8"/>
<FIELD attrname="latT" fieldtype="r8"/>
<FIELD attrname="LonR" fieldtype="r8"/>
<FIELD attrname="LatB" fieldtype="r8"/>
<FIELD attrname="color1" fieldtype="i4"/>
<FIELD attrname="color2" fieldtype="i4"/>
<FIELD attrname="visible" fieldtype="boolean"/>
<FIELD attrname="picname" fieldtype="string" WIDTH="255"/>
<FIELD attrname="categoryid" fieldtype="i4"/></FIELDS>
<PARAMS AUTOINCVALUE="3"/></METADATA><ROWDATA>
<ROW id="1" name="Prueba1" descr="06/04/2015 9:48:56" scale1="2" scale2="0" lonlatarr="ANBXOtFZZY8FwABITxpq702zBMAgSCcJANBXOlGCU48FwABA1S48rk+zBMAgSCcJANBXOlEvPY8FwACo0VkXqlWzBMAgSCcJANBXOtGRPI8FwADYDRHFYGKzBMAgSCcJ" lonL="-71.69795087659068" latT="-44.826108606201" LonR="-71.61829999768443" LatB="-44.84607227245893" color1="-1493237760" color2="0" visible="TRUE" picname="" categoryid="1"/>
<ROW id="2" name="Prueba Polygon" descr="06/04/2015 10:16:25" scale1="2" scale2="0" lonlatarr="ANBXOtEeN48FwABAFiGe6lSzBMD89hIAANBXOlGPN48FwAAoQlXdQGKzBMD89hIAANBXOtELLI8FwACAC5X1IGKzBMD89hIAANBXOlEUK48FwACA1erKqlSzBMD89hIAANBXOtEeN48FwABAFiGe6lSzBMD89hIAANBXOtEeN48FwABAFiGe6lSzBMD89hIA" lonL="-71.6085152991981" latT="-44.83268277223885" LonR="-71.58413938367076" LatB="-44.84595056374432" color1="-1509949440" color2="872415231" visible="TRUE" picname="" categoryid="1"/>
</ROWDATA></DATAPACKET>

如您所見,有一個名為“ ROW”的標簽,其中有“ shapes”。 我嘗試將其重寫為自己的數據,但實際的點數組已編碼。 在網上搜索時,我發現它是Base64編碼(Delphi)。 我對此一無所知。 我讀了一些,但是退出很復雜。 我的具體問題是:-我可以使用任何語言進行Base64編碼嗎? 還是只需要使用Delphi? -如果是這樣,有人在python中有代碼嗎?

謝謝!

解碼base64數據非常簡單。

In [1]: import base64

In [2]: lonlatarr = base64.b64decode("ANBXOtFZZY8FwABITxpq702zBMAgSCcJANBXOlGCU48FwABA1S48rk+zBMAgSCcJANBXOlEvPY8FwACo0VkXqlWzBMAgSCcJANBXOtGRPI8FwADYDRHFYGKzBMAgSCcJ")

In [3]: len(lonlatarr)
Out[3]: 96

In [4]: lonlatarr[0:9]
Out[4]: b'\x00\xd0W:\xd1Ye\x8f\x05'

解釋什么手段是比較困難的。

注意數據中的規律性:

In [18]: lonlatarr[0:4], lonlatarr[24:28], lonlatarr[48:52]
Out[18]: (b'\x00\xd0W:', b'\x00\xd0W:', b'\x00\xd0W:')

In [19]: len(lonlatarr)
Out[19]: 96

In [20]: lonlatarr[41:48], lonlatarr[89:96]
Out[20]: (b"\xb3\x04\xc0 H'\t", b"\xb3\x04\xc0 H'\t")

In [21]: lonlatarr[17:24], lonlatarr[41:48], lonlatarr[89:96]
Out[21]: (b"\xb3\x04\xc0 H'\t", b"\xb3\x04\xc0 H'\t", b"\xb3\x04\xc0 H'\t")

序列以b'\\ x00 \\ xd0W:'開頭,並以b“ \\ xb3 \\ x04 \\ xc0 H'\\ t”結尾。 兩者之間的數據各不相同。 這些可能標志着經度或緯度的開始和結束。 或者數字的開頭和結尾由於范圍和編碼而總是相同的。

幸運的是,該程序的代碼似乎已經可用

您的文件可能與MarksDB有關 很難說。

與開發人員聯系可能是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM