Я использую tiled для создания карты тайлов.
(Tiled - это редактор карт листов с поддержкой ортогональных и изометрических карт)
Сохраняет карту в файле XML. Он может использовать определенные структуры кодирования:
- обычный base64
- base64 + gzip
- base64 + zlib
- обычный CSV
Теперь я полностью разочаровался в gzip (мой сервер gzips все равно траффирует, так что без потерь)
Поэтому я решил попробовать обычное декодирование base64, используя плагин base64 jquery
Но данные получаются искаженными, например:
��������������������������������������������������������
Я предполагаю, что это двоичное кодирование, но как мне обойти это?
Пример данных, которые необходимо декодировать (обычный base64):
jQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAAA=
Пример данных, которые необходимо декодировать (gzipped base64):
H4sIAAAAAAAACw3DhwnAMAwAMP8P2Rdk9s1KoBQR2WK12R1Ol9vj9fn5A/luZ4Y4AAAA
Пример данных в формате csv:
141,142,143,144,145,146,147,
161,162,163,164,165,166,167
Так как же я могу превратить обычный бит в кодировке base64 и превратить его в csv?
Edit:
Используя решение, найденное Пойнти, я получил полукорректный массив.
Однако после нескольких тысяч символов 2 числа снова будут неправильными. И даже чаще после этого.
Затем я нашел кого-то, кто также использует плиточный код и кодировку base64 в своей схеме.
После того, как он расшифровал массив, он также сделал это с ним:
var d = base64_decode($(this).find('data').text());
var e = new Array();
for (var i = 0; i <= d.length; i += 4) {
var f = d[i] | d[i + 1] << 8 | d[i + 2] << 16 | d[i + 3] << 24;
e.push(f)
}
Я понятия не имею, зачем это нужно, но, по крайней мере, это работает.
Если кто-нибудь может объяснить, пожалуйста, сделайте!