成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Base58編碼的長(zhǎng)度是如何計(jì)算的?

MyFaith / 2478人閱讀

摘要:是由中本聰為設(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::vector b58((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

相關(guān)文章

  • 區(qū)塊鏈基礎(chǔ)知識(shí)

    摘要:區(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)作...

    acrazing 評(píng)論0 收藏0
  • 如何在Java中生成比特幣錢(qiá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...

    kidsamong 評(píng)論0 收藏0
  • 如何在Java中生成比特幣錢(qiá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...

    liaorio 評(píng)論0 收藏0
  • Base64編碼

    摘要:編碼三個(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ì)算...

    iliyaku 評(píng)論0 收藏0
  • 基于Java語(yǔ)言構(gòu)建區(qū)塊鏈(五)—— 地址(錢(qián)包)

    摘要:本質(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... 引言 在 上一篇 文...

    entner 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

MyFaith

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<