摘要:是由中本聰為設(shè)計(jì)的。在編碼后的字符串中,每一個(gè)字符都是從個(gè)字符中當(dāng)中選擇出來(lái)的。換句話說(shuō),每一個(gè)字母代表的信息量是。我們輸入的字節(jié)流信息量是固定的那么,需要預(yù)留的字符數(shù)量就是經(jīng)過(guò)換算,最后,還需要加向上取整最終結(jié)果就是
base58 是由中本聰為bitcoin設(shè)計(jì)的。
相比與base64的字符,他將一些直觀看來(lái)模糊的字符去除了。
字符共58個(gè)
1-9 共9個(gè)
大寫(xiě)字母A-Z(不包括O、I),共24個(gè)
小寫(xiě)字母a-z (不包括l),共25個(gè)
在一些base58的實(shí)現(xiàn)代碼中,我們往往需要為生成的編碼后的字符串預(yù)留空間,這是如何計(jì)算的呢?
例如一段源碼及注釋?zhuān)?/p>
std::vectorb58((pend - pbegin) * 138 / 100 + 1); // log(256) / log(58), rounded up
這個(gè)公式看起來(lái)有點(diǎn)讓人摸不著頭腦,但經(jīng)過(guò)一些思考,我想明白了。
在編碼后的字符串中,每一個(gè)字符都是從58個(gè)字符中當(dāng)中選擇出來(lái)的。那么這58種不同的信息可以用多少bit來(lái)代替呢?顯然答案是log(2)58。換句話說(shuō),每一個(gè)字母代表的信息量是log(2)58 bit。
我們輸入的字節(jié)流信息量是固定的:(byte_length * 8)bit
那么,需要預(yù)留的字符數(shù)量就是(byte_length * 8)/ log258
經(jīng)過(guò)換算,
(byte_length * 8)/ log258 =
(byte_length * log2256) / log258 =
byte_length * 1.38
最后,還需要加向上取整
最終結(jié)果就是 byte_length * 1.37 + 1
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24122.html
摘要:區(qū)塊鏈技術(shù)基礎(chǔ)什么是區(qū)塊鏈技術(shù)運(yùn)行區(qū)塊鏈客戶(hù)端的計(jì)算節(jié)點(diǎn)彼此可以相互通信。區(qū)塊鏈的組成模塊區(qū)塊鏈賬本。區(qū)塊鏈技術(shù)的意義數(shù)據(jù)不可篡改。區(qū)塊鏈中會(huì)對(duì)區(qū)塊頭進(jìn)行哈希計(jì)算,得出該區(qū)塊的哈希值。這保證了每個(gè)區(qū)塊被加入鏈后不可被修改。 區(qū)塊鏈技術(shù)基礎(chǔ) 什么是區(qū)塊鏈技術(shù)? 運(yùn)行區(qū)塊鏈客戶(hù)端的計(jì)算節(jié)點(diǎn)彼此可以相互通信。 每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)賬本。 每個(gè)節(jié)點(diǎn)的收支記錄都會(huì)廣播給其他節(jié)點(diǎn)。 篩選出一個(gè)節(jié)點(diǎn)作...
摘要:公鑰上面生成的密鑰的公共部分被編碼為比特幣地址。使用對(duì)地址進(jìn)行編碼我們現(xiàn)在使用庫(kù)中的方法來(lái)獲得最終的比特幣地址。這是比特幣應(yīng)在交易中發(fā)送到的地址。這是一個(gè)如何在中生成比特幣地址的演示文稿。 讓我們通過(guò)學(xué)習(xí)比特幣(Bitcoin)如何實(shí)施該技術(shù)的各個(gè)方面來(lái)工作,好嗎?該技術(shù)包括以下幾個(gè)方面: 比特幣地址bitcoin address是用來(lái)發(fā)送和接收比特幣的。 交易transaction...
摘要:公鑰上面生成的密鑰的公共部分被編碼為比特幣地址。使用對(duì)地址進(jìn)行編碼我們現(xiàn)在使用庫(kù)中的方法來(lái)獲得最終的比特幣地址。這是比特幣應(yīng)在交易中發(fā)送到的地址。這是一個(gè)如何在中生成比特幣地址的演示文稿。 讓我們通過(guò)學(xué)習(xí)比特幣(Bitcoin)如何實(shí)施該技術(shù)的各個(gè)方面來(lái)工作,好嗎?該技術(shù)包括以下幾個(gè)方面: 比特幣地址bitcoin address是用來(lái)發(fā)送和接收比特幣的。 交易transaction...
摘要:編碼三個(gè)重要概念三個(gè)字節(jié)由四個(gè)字節(jié)表示的過(guò)程碼表補(bǔ)位如何用三個(gè)字節(jié)表示四個(gè)字節(jié)一個(gè)字節(jié)由位二進(jìn)制組成,三個(gè)字節(jié)總共位,所以轉(zhuǎn)換后有效的二進(jìn)制位數(shù)為位。 Base64編碼 1、三個(gè)重要概念 三個(gè)字節(jié)由四個(gè)字節(jié)表示的過(guò)程 Base64碼表 補(bǔ)位 2、如何用三個(gè)字節(jié)表示四個(gè)字節(jié) 一個(gè)字節(jié)由8位二進(jìn)制組成,三個(gè)字節(jié)總共24位,24 ÷ 4 = 6 , 所以轉(zhuǎn)換后有效的二進(jìn)制位數(shù)為6位。計(jì)算...
摘要:本質(zhì)上,比特幣錢(qián)包就是一對(duì)這樣的密鑰。例如,一個(gè)錯(cuò)誤比特幣地址就不會(huì)被錢(qián)包認(rèn)為是有效的地址,否則這種錯(cuò)誤會(huì)造成資金的丟失。 showImg(https://segmentfault.com/img/remote/1460000013982997?w=1920&h=1053); 最終內(nèi)容請(qǐng)以原文為準(zhǔn):https://wangwei.one/posts/f90... 引言 在 上一篇 文...
閱讀 1884·2021-09-22 15:29
閱讀 3361·2019-08-30 15:44
閱讀 3570·2019-08-30 15:43
閱讀 1769·2019-08-30 13:48
閱讀 1497·2019-08-29 13:56
閱讀 2483·2019-08-29 12:12
閱讀 977·2019-08-26 11:35
閱讀 1059·2019-08-26 10:25