如何解码Base64(未压缩)TMX数据元素内容?

时间:2015-05-28 07:44:05

标签: actionscript-3 encoding base64 tiled tmx

我一直在尝试使用AS3解码TMX文件中数据元素的Base64内容。我正在使用mx.utils.Base64Decoder来解码内容。

这是我没有编码的1x1图层数据(我不确定编码数据是否是XML格式):

<tile gid="1"/>

这是我的图层编码:

AQAAAA==

当我尝试解码数据时,返回值为空。我尝试使用在线Base64解码器解码数据,但也显示空值。

1 个答案:

答案 0 :(得分:1)

base64编码的数据是二进制的,其中每个8字节是一个32位无符号的小端全局tile ID,在你的情况下为1.解码后的数据因此不能直接表示为字符串。

您案例中数据的字节值为:

1 0 0 0

由于1的ASCII值是一个控制字符,表示SOH(起始标题),0通常用于标记字符串的结尾,因此当您尝试打印时不会显示任何内容。您应该将这些字节组合成32位无符号全局tile ID,如下所示:

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