我想把变量和可数的位流编码和解码成二进制字符串,数字,64位编码字符串。流的最大长度约为21+20=41位,但可以稍长43、45。在
假设位将由某个数组表示。在
bits = [1]
encoded = someEncoder(bits)
decoded = someDecoder(encoded)
assert bits == decoded
比特流可以更长,例如:
^{pr2}$考虑到它是变量位列表,编码/解码必须无损:
a = someEncoder([0])
b = someEncoder([0, 0])
assert a != b
根据@Martijn的回答,我想你需要以下内容。这使用编码前导1的思想来区分前导零的可变长度之间的差异:
输出:
^{pr2}$要将表示位的整数转换为8位字节(仍为整数),请使用位移位:
或使用
^{pr2}$reduce()
:这可以转换为一个二进制字符串,其中
format(result, 'b')
,可选地加上宽度和前缀0
,以填充一定长度的零。在演示:
如果需要直接转到二进制字符串,只需将位映射到字符串并连接:
可使用
str.zfill()
将其进一步填充到64个字符:相关问题 更多 >
编程相关推荐