我正在为iOS编写一个使用.tmx地图文件的游戏。我正在应用程序'Tiled'中创建地图,然后在他们到达iOS之前的某个时刻,我正在用Perl解析它们。
当我将文件保存为直接XML时,perl可以解析它们。但是,cocos2d坚持认为文件是base64编码的。 “Tiled”地图编辑器使用这种编码方案保存文件没有问题,iOS读取它们就好了,但它给我的perl代码带来了问题。
出于某种原因,perl中的标准MIME :: Base64 decode_base64()方法并没有在这里切割芥末 - 当我解码字符串时,我得到一个或两个二进制字符 - 菱形框中的问号等。
TMX文件格式的模糊文档使得不清楚在base64编码之前或之后是否存在其他编码,这可能导致此问题。我查看了编码器的cpp源代码,我看到很多对Latin1的引用,但我无法解释详细情况。
我注意到当我尝试使用MIME :: Base64进行自己的测试,编码然后解码测试字符串时,编码后的文本看起来与我从TMX文件中看到的文本截然不同 - 例如,我的短字符串的base64编码文本如下所示:
aGVyZSBpcyBhIHNlbnRlbmNl
但来自TMX文件的base64编码文本如下所示:
9QAAAAABAAANAQAAGAEAAA==
有什么建议可以尝试解码看起来像这样的字符串?
答案 0 :(得分:3)
我认为this page可能就是你要找的东西。它建议首先decode_base64,然后(如果compression="gzip"
属性存在)使用gunzip解压缩它,最后使用unpack('V*', $data)
提取4字节列表小端整数。