91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

BitCoin源碼研究(1)-Base58編碼

發布時間:2020-03-31 18:45:45 來源:網絡 閱讀:7855 作者:ggxxjj123 欄目:編程語言

Base58編碼由58個數字和大小寫字母組成,BitCoin源碼中定義及注釋如下:


/** All alphanumeric characters except for "0", "I", "O", and "l" */

static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";


如unsigned char ucData[4] = { 0x39, 0x3a, 0x3b, 0x3c };的base58編碼過程如下:


1、先計算ucData開頭為0x00的個數 zeros ,這里zeros = 0;

    while (pbegin != pend && *pbegin == 0) {

        pbegin++;

        zeroes++;

    }


2、跳過開頭的zeros個0x00,計算所需要的緩存

    int size = (pend - pbegin) * 138 / 100 + 1; // log(256) / log(58), rounded up.


3、256進制轉58進制的計算

std::vector<unsigned char> b58(size);


// Process the bytes.

while (pbegin != pend) {

    int carry = *pbegin;

    int i = 0;

    // Apply "b58 = b58 * 256 + ch".

    for (std::vector<unsigned char>::reverse_iterator it = b58.rbegin(); 

                    (carry != 0 || i < length) && (it != b58.rend()); it++, i++) {

        carry += 256 * (*it);

        *it = carry % 58;

        carry /= 58;

    }


    assert(carry == 0);

    length = i;

    pbegin++;

}


4、輸出編碼結果

先在字符串前補上zeros 個1 ,后面的依次綴加DstByte對應的 pszBase58 字符


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲阳县| 荔浦县| 辽阳县| 囊谦县| 营口市| 东乌珠穆沁旗| 砀山县| 巴林左旗| 溧水县| 攀枝花市| 行唐县| 田东县| 昆明市| 新沂市| 海宁市| 安顺市| 中卫市| 新泰市| 崇信县| 宁德市| 华池县| 民勤县| 游戏| 高邑县| 周至县| 广宗县| 屯留县| 格尔木市| 涡阳县| 宜州市| 太仓市| 探索| 县级市| 息烽县| 金溪县| 突泉县| 西平县| 嵊州市| 玉树县| 尚志市| 东阿县|