如何解码 Base64(未压缩)TMX 数据元素内容?
How to decode Base64(uncompressed) TMX data element contents?
我一直在尝试使用 AS3 解码 TMX 文件中数据元素的 Base64 内容。我正在使用 mx.utils.Base64Decoder
来解码内容。
这是我没有编码的1x1层数据(我不确定编码数据是否是XML格式):
<tile gid="1"/>
这是我编码的图层:
AQAAAA==
当我尝试解码数据时,return 值为空。我尝试使用在线 Base64 解码器解码数据,但它也显示了一个空值。
base64 编码的数据是二进制的,其中每 8 个字节是一个 32 位无符号 little-endian 全局图块 ID,在您的情况下为 1。因此,解码后的数据不能直接表示为字符串。
在您的案例中,数据的字节值为:
1 0 0 0
由于 1 的 ASCII 值是一个控制字符,表示 SOH(标题开始),而 0 通常用于标记字符串的结尾,因此当您尝试打印时不会显示任何内容。您应该改为将这些字节组合到 32 位无符号全局图块 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:
我一直在尝试使用 AS3 解码 TMX 文件中数据元素的 Base64 内容。我正在使用 mx.utils.Base64Decoder
来解码内容。
这是我没有编码的1x1层数据(我不确定编码数据是否是XML格式):
<tile gid="1"/>
这是我编码的图层:
AQAAAA==
当我尝试解码数据时,return 值为空。我尝试使用在线 Base64 解码器解码数据,但它也显示了一个空值。
base64 编码的数据是二进制的,其中每 8 个字节是一个 32 位无符号 little-endian 全局图块 ID,在您的情况下为 1。因此,解码后的数据不能直接表示为字符串。
在您的案例中,数据的字节值为:
1 0 0 0
由于 1 的 ASCII 值是一个控制字符,表示 SOH(标题开始),而 0 通常用于标记字符串的结尾,因此当您尝试打印时不会显示任何内容。您应该改为将这些字节组合到 32 位无符号全局图块 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: