2015-05-28 6 views
1

Я пытался декодировать содержимое Base64 элемента данных в файле TMX с AS3. Я использую mx.utils.Base64Decoder для декодирования содержимого.Как декодировать содержимое элемента данных TMX Base64 (несжатое)?

Вот мои данные 1x1 слой без кодирования (я не уверен, если закодированные данные в формате XML):

<tile gid="1"/> 

Вот мой слой закодирован:

AQAAAA== 

Когда Я пытаюсь декодировать данные, возвращаемое значение пуст. Я попытался декодировать данные с помощью онлайн-декодера Base64, но также показал пустое значение.

ответ

1

Данные, закодированные в base64, являются двоичными, причем каждый из 8 байтов представляет собой 32-разрядный беззнаковый малочисленный идентификатор глобального фрагмента в вашем случае 1. Таким образом, декодированные данные не могут быть непосредственно представлены в виде строки.

Значение байта данных в вашем случае будет:

1 0 0 0 

Поскольку значение ASCII для 1 представляет собой управляющий символ означает 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 для получения более подробной информации и полный пример кода: