作者:mobiledu2502906927 | 来源:互联网 | 2022-12-09 10:43
我有一个python整数列表,我想知道当编码为协议缓冲区可变长度整数或varints序列时,它将占用多少空间。在不实际编码整数的情况下解决此问题的最佳方法是什么?
my_numbers = [20, 69, 500, 38987982344444, 420, 99, 1, 999]
e = MyCoolVarintArrayEncoder(my_numbers)
print(len(e)) # ???
Prune..
5
每个整数均以基数128编码,每个“数字”一个字节。以任何基数表示的整数值的长度为ceil(log(value,base))。
取每个整数的log(base = 128); 将这些值四舍五入到最接近的整数;将这些四舍五入的值相加,就可以了。
1> Prune..:
每个整数均以基数128编码,每个“数字”一个字节。以任何基数表示的整数值的长度为ceil(log(value,base))。
取每个整数的log(base = 128); 将这些值四舍五入到最接近的整数;将这些四舍五入的值相加,就可以了。
很好的答案,但也要注意:对于正整数,这是正确的;负数始终是...什么10个字节?