第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 32 字節(jié)哈希的二進制長度是 267 位而不是 256 位?

為什么 32 字節(jié)哈希的二進制長度是 267 位而不是 256 位?

Go
尚方寶劍之說 2023-08-07 10:49:57
假設(shè)您對某個字符串進行哈希處理以生成 256 位輸出,為什么二進制表示的長度不是 256package mainimport (    "fmt"    "crypto/sha256")func main() {    s := "1"    m := sha256.Sum256([]byte(s))    fmt.Println(len(m))    b := fmt.Sprintf("%b\n", m[:])    fmt.Println(len(b))}輸出:32 267
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經(jīng)驗 獲得超10個贊

如果你打印它,你會立即看到它:


fmt.Println(b)

哪個輸出:


[1101011 10000110 10110010 1110011 11111111 110100 11111100 11100001 10011101 1101011 10000000 1001110 11111111 1011010 111111 1010111 1000111 10101101 10100100 11101010 10100010 101111 11101 1001001 11000000 11110 1010010 11011101 10110111 10000111 1011011 1001011]

您正在打印一個數(shù)組,并且該包在各個字節(jié)的二進制表示之間fmt添加方括號和空格。[]另外,您還可以在格式字符串中添加換行符。


要僅獲取位,您可以使用如下循環(huán):


buf := &strings.Builder{}

for _, v := range m {

    fmt.Fprintf(buf, "%08b", v)

}

b2 := buf.String()

fmt.Println(b2)

fmt.Println(len(b2))

請注意,%08b格式字符串指定寬度為 8 并用作0填充(如果字節(jié)值小于 8 位)。


哪個輸出:


0110101110000110101100100111001111111111001101001111110011100001100111010110101110000000010011101111111101011010001111110101011101000111101011011010010011101010101000100010111100011101010010011100000000011110010100101101110110110111100001110101101101001011

256

在Go Playground上嘗試這些。



查看完整回答
反對 回復(fù) 2023-08-07
  • 1 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號