Base58
base58check編碼時如何處理前導0(b58 1)
我正在嘗試更全面地理解 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 會自動附加到後面