Base58

base58check編碼時如何處理前導0(b58 1)

  • January 24, 2021

我正在嘗試更全面地理解 base58check 編碼算法。

不幸的是,我一直遇到一個問題,即如何處理輸入的 base58 值將具有前導 0(base58 中的 1)的情況。我在網上到處都能找到有關此的任何資訊,它只是簡單地指出“數據經過編碼以避免出現前導 0,除非在輸入中表示完整的 ‘0’ 字節。”

我需要了解的是:為了避免/糾正輸出字元串中的這種情況,數據(輸入或輸出)發生了什麼變化?

從頭開始迭代,直到達到非零字節。Base58 對非零字節及以下內容進行編碼,並1在您為每個初始的一個零字節 ( 0x00) 創建的 base58 字元串之前添加 s 。

第一個非零字節之後的零字節不需要特殊處理。

例如,[0, 13, 36], 被編碼為,1211因為值是1*58^2並且1在 base58 字母表中是2。從這裡可以看出,如果它是 58 的倍數,則不需要特殊處理,因為編碼是大端,並且1由 58 的冪引起的 s 會自動附加到後面

引用自:https://bitcoin.stackexchange.com/questions/101803