如何将数字列表编码为base64

时间:2019-07-18 10:15:48

标签: python base64

我有一个包含负数的列表,并且想用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==

1 个答案:

答案 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=='