当尝试理解base58check如何工作时,在比特币referenced implementation中,当计算保存base58编码字符串所需的大小时,它使用以下公式:
// https://github.com/bitcoin/libbase58/blob/master/base58.c#L155
size = (binsz - zcount) * 138 / 100 + 1;
其中binsz
是要编码的输入缓冲区的大小,zcount
是缓冲区中前导零的数量。什么是138和100来自和为什么?
答案 0 :(得分:0)
tl;博士
这是在base58 <-> base256
转换期间近似输出大小的公式。
即您要分别乘以256和58的编码/解码部分
编码输出为输入大小的~138%
(+ 1 /四舍五入):
n * log(256) / log(58) + 1
(n * 138 / 100 + 1)
解码输出为输入大小的~73%
(+ 1 /四舍五入):
n * log(58) / log(256) + 1
( n * 733 /1000 + 1)