> zeromq | bezpieczny dla kodu | wydajny <
// Z85 – wariant Base85 zaprojektowany przez ZeroMQ, bezpieczny dla kodu źródłowego i JSON
Przyjazny dla kodu źródłowego
Nie używa cudzysłowów, backslashy ani białych znaków, dzięki czemu jest bezpieczny dla łańcuchów C/C++, JSON oraz plików konfiguracyjnych bez dodatkowego escapowania.
Wysoka gęstość informacji
Koduje 4 bajty w 5 znaków, co przekłada się na ok. 25% narzutu – mniej niż ok. 33% w przypadku Base64.
Standard ZeroMQ
Oficjalny format kodowania używany w ZeroMQ do reprezentowania danych binarnych w protokołach tekstowych.
>> informacje techniczne
Jak działa Z85:
Z85 koduje bloki po 4 bajty w 5 znaków, używając 85 drukowalnych znaków ASCII. Alfabet został tak dobrany, aby nie zawierał znaków, które w łańcuchach C/C++ lub JSON wymagają escapowania, co upraszcza osadzanie danych binarnych w kodzie.
Przykład:
"Hello" → nm=QNz.92
Dlaczego warto używać Z85:
- >Do osadzania danych binarnych bezpośrednio w kodzie źródłowym i plikach konfiguracyjnych
- >Aby ograniczyć liczbę sekwencji escape w JSON, YAML, XML itp.
- >Aby uzyskać bardziej zwartą reprezentację tekstową niż Base64
- >Aby zachować spójność z ekosystemem ZeroMQ
- >Aby ujednolicić sposób kodowania binarnych payloadów w tekstowych API
>> najczęstsze pytania
Czym jest kodowanie Z85?
Z85 to wariant Base85 zdefiniowany przez ZeroMQ. Wykorzystuje 85 drukowalnych znaków ASCII dobranych w taki sposób, aby łańcuchy można było bezpiecznie wstawiać do kodu źródłowego i JSON bez dodatkowych sekwencji escape.
Czym Z85 różni się od innych odmian Base85?
W przeciwieństwie do wielu implementacji Base85, Z85 unika cudzysłowów, backslashy, spacji i innych znaków, które w popularnych językach programowania zwykle wymagają escapowania.
Kiedy warto użyć Z85?
Gdy chcesz umieszczać dane binarne w kodzie, konfiguracji lub protokołach tekstowych (zwłaszcza tam, gdzie używasz ZeroMQ) i zależy Ci na minimalizacji problemów z escapowaniem oraz na czytelności.
Jakie ograniczenia długości obowiązują w Z85?
Długość danych binarnych musi być wielokrotnością 4 bajtów. Enkoder może dodać wypełnienie, ale dekoder zakłada spełnienie tego warunku, aby poprawnie odtworzyć oryginalny strumień bajtów.