Почему в base85 нет соответствия между Dart и Python?
Код Python
from base64 import b85decode
from base64 import b85encode
encoded=b85encode(b'Hello, world!!!!')
print(encoded.decode('utf-8'))
Выход:
'NM&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 в примере с dart. Сравните это (требуется
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 за улов.