Почему в base85 существует несоответствие между Dart и Python?

#python #python-3.x #dart #base85

Вопрос:

Код на Python

 from base64 import b85decode
from base64 import b85encode
encoded=b85encode(b'Hello, world!!!!')
print(encoded.decode('utf-8'))
 

Выход:

'NMamp;qnZ!92pZ*pv8At50l'

Код дротика

 import 'dart:io';
import 'dart:typed_data';
import 'package:base85/base85.dart';

void main() {
  var codec = Base85Codec(Alphabets.z85);
  var encode = codec.encode(Uint8List.fromList('Hello, world!!!!'.codeUnits));
  print(encode);
}
 

Выход:

nm=QNz.92Pz/PV8aT50L

Регистр букв меняется местами между верхним и нижним, и не-буквы также отображаются по-разному.

Возможно, я что-то упускаю.

Ответ №1:

Потому что на самом деле вы вообще не используете ascii85 в примере с дротиком. Сравните это (требуется pip install pyzmq *):

 from zmq.utils import z85
z85.encode(b"Hello, world!!!!")
#  b'nm=QNz.92Pz/PV8aT50L'
 

z85 и ascii85 немного отличаются друг от друга.

* pip show zmq раскрывает: Summary: You are probably looking for pyzmq... Requires: pyzmq . Спасибо @SumitKumar за улов.

Рекомендации:

https://rfc.zeromq.org/spec/32/

Комментарии:

1. pip install pyzmq будет предоставлена последняя версия библиотеки.

2. @SumitKumar хороший улов, спасибо, обновлено