Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当试图了解 base58check 的工作原理时,在比特币引用的实现中,当计算保存 base58 编码字符串所需的大小时,它使用以下公式:
// https://github.com/bitcoin/libbase58/blob/master/base58.c#L155 size = (binsz - zcount) * 138 / 100 + 1;
其中binsz是要编码的输入缓冲区的大小, 是缓冲区zcount中前导零的数量。138 和 100 来自什么,为什么?
binsz
zcount
base58 <-> base256tl; dr 这是在转换过程中近似输出大小的公式。 即你乘以256和58的编码/解码部分
base58 <-> base256
编码输出为~138%输入大小(+1/向上取整):
~138%
n * log(256) / log(58) + 1 (n * 138 / 100 + 1)
解码输出为~73%输入大小(+1/向上取整):
~73%
n * log(58) / log(256) + 1 ( n * 733 /1000 + 1)