> zeromq | безопасно для кода | эффективно <
// Z85 — вариант Base85 из ZeroMQ, безопасный для исходного кода и JSON
Удобен для исходного кода
Не содержит кавычек, обратных слэшей или пробелов — строки безопасно вставляются в C/C++‑код, JSON и конфигурационные файлы без дополнительного экранирования.
Высокая плотность
Около 25 % накладных расходов — эффективнее Base64 (~33 %) при текстовом представлении бинарных данных.
Стандарт ZeroMQ
Официальная схема кодирования для бинарных данных в текстовых протоколах ZeroMQ.
>> техническая информация
Как работает Z85:
Z85 кодирует блоки по 4 байта в 5 символов, используя 85 печатаемых ASCII‑символов. Алфавит подобран так, чтобы исключить символы, требующие экранирования в строках C/C++ и JSON, что упрощает встраивание бинарных данных в исходный код и конфигурации.
Пример:
"Hello" → nm=QNz.92
Зачем использовать Z85:
- >Встраивание бинарных данных непосредственно в исходный код
- >Минимум экранирования в JSON, YAML, XML и текстовых форматах
- >Более компактное представление по сравнению с Base64
- >Совместимость с экосистемой ZeroMQ и её протоколами
- >Единообразное кодирование бинарных payload'ов в текстовых API и протоколах
>> часто задаваемые вопросы
Что такое кодирование Z85?
Z85 — это вариант Base85, определённый ZeroMQ. Он использует 85 печатаемых ASCII‑символов, подобранных таким образом, чтобы строки можно было безопасно вставлять в исходный код без экранирования.
Чем Z85 отличается от обычного Base85?
В отличие от некоторых других реализаций Base85, Z85 исключает кавычки, обратные слэши, пробелы и другие символы, требующие экранирования в большинстве языков программирования.
Когда стоит использовать Z85?
Когда нужно включать бинарные данные в исходный код, конфигурационные файлы или текстовые протоколы (особенно с ZeroMQ), и при этом важно минимизировать потребность в экранировании.
Каковы ограничения по длине данных для Z85?
Длина бинарных данных должна быть кратна 4 байтам. Энкодер может добавить заполнитель, но декодер исходит из этого требования, чтобы корректно восстановить исходную последовательность байт.