2015-05-28 32 views
1

我一直在嘗試用AS3解碼TMX文件中數據元素的Base64內容。我正在使用mx.utils.Base64Decoder來解碼內容。如何解碼Base64(未壓縮)的TMX數據元素內容?

這是我的1x1層數據,而無需編碼(我不知道,如果編碼的數據是XML格式):

<tile gid="1"/> 

這裏是我的層編碼:

AQAAAA== 

當我嘗試解碼數據,返回值爲空。我試圖用在線Base64解碼器解碼數據,但也顯示了一個空值。

回答

1

base64編碼的數據是二進制的,其中每個8字節都是一個32位無符號小端全局區塊ID,在您的案例1中。解碼後的數據因此不能直接表示爲字符串。

在您的情況下,數據的字節值將是:

1 0 0 0 

由於用於1 ASCII值是控制字符含義SOH(標題的開始)和0通常用於標記的端部字符串,當您嘗試打印此內容時,不會顯示任何內容。您應該將這些字節,而不是合併到32位無符號全球瓷磚,將按照如下:

unsigned global_tile_id = data[tile_index] | 
          data[tile_index + 1] << 8 | 
          data[tile_index + 2] << 16 | 
          data[tile_index + 3] << 24; 

TMX format reference的詳細信息和完整的示例代碼: