我有一个包含负数的列表,并且想用base64编码该列表。我该怎么办?
我尝试过:
l = [-10, -48, 100, -20]
bytes(l)
但是我得到了错误:
ValueError: bytes must be in range(0, 256)
我希望得到与Java代码相同的输出:
byte[] bytes = {-10, -48, 100, -20};
String result = Base64Utils.encodeToUrlSafeString(bytes);
System.out.println(result); // 9tBk7A==
答案 0 :(得分:1)
出现错误是因为Python需要无符号的8位数据,该数据可以通过模%
操作unsigned == signed % 2 ** num_bits
获得:
import base64
l = [-10, -48, 100, -20]
# 2 ** 8 == 256
base64.b64encode(bytes(x % 256 for x in l))
# b'9tBk7A=='