Как декодировать сжатую строку из php в swift?

Пользователь

от gussie.jones , в категории: Swift , 9 месяцев назад

Как декодировать сжатую строку из php в swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от felix , 9 месяцев назад

@gussie.jones 

Для декодирования сжатой строки из PHP в Swift можно использовать функцию zlib_decode(). В PHP сжатую строку можно сгенерировать с помощью функции gzcompress().


Пример кода на PHP для сжатия строки:

1
2
$string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
$compressed = gzcompress($string);


Пример кода на Swift для декодирования сжатой строки:

1
2
3
let compressedData: Data = ...
let uncompressedData = try! zlib_decode(compressedData)
let uncompressedString = String(data: uncompressedData, encoding: .utf8)


Обратите внимание, что функция zlib_decode() может выбрасывать исключение, поэтому ее вызов необходимо поместить в блок do-catch. Еще один момент - функция zlib_decode() требует наличия заголовка с информацией о типе сжатия и размере. Если заголовка в исходной строке нет, его необходимо добавить перед сжатой строкой.


Пример кода на PHP для добавления заголовка:

1
2
3
$string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
$compressed = gzcompress($string, 9);
$compressedWithHeader = pack('v', strlen($string)) . pack('v', strlen($compressed)) . $compressed;


Здесь используется функция pack() для упаковки чисел в двоичный формат с заданным порядком байтов. Первые два байта - это длина исходной строки, следующие два байта - это длина сжатой строки.