[试图通过bitcoin在referenced implementation中了解base58check的工作原理时,在计算保存base58编码的字符串所需的大小时,使用以下公式:
// https://github.com/bitcoin/libbase58/blob/master/base58.c#L155
size = (binsz - zcount) * 138 / 100 + 1;
其中binsz
是要编码的输入缓冲区的大小,zcount
是缓冲区中前导零的数量。 138和100来自何方?为什么?
编码输出约为输入大小的138%(+ 1 /四舍五入:]
n * log(256)/ log(58)+1(n * 138/100 + 1)
解码输出约为输入大小的73%(+ 1 /向上舍入:]
n * log(58)/ log(256)+ 1(n * 733/1000 +1)