为什么在base85中Dart和Python之间存在不匹配?

2024-09-29 11:31:16 发布

您现在位置: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

字母大小写在大写和小写之间交换,非字母的映射也不同

我可能遗漏了什么


Tags: 代码fromimporthelloworldvar字母codec
1条回答
网友
1楼 · 发布于 2024-09-29 11:31:16

因为您在dart示例中根本没有实际使用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/

相关问题 更多 >