Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 为什么32字节散列的长度是267位,而不是256位?_Go_Bit Representation - Fatal编程技术网

Go 为什么32字节散列的长度是267位,而不是256位?

Go 为什么32字节散列的长度是267位,而不是256位?,go,bit-representation,Go,Bit Representation,如果您散列一些字符串以生成256位的输出,为什么二进制表示的长度不是256 package main import ( "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

如果您散列一些字符串以生成256位的输出,为什么二进制表示的长度不是256

package main

import (
    "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

如果您将其打印出来,您会立即看到:

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]
0110101110000110101100100111001111111111001101001111110011100001100111010110101110000000010011101111111101011010001111110101011101000111101011011010010011101010101000100010111100011101010010011100000000011110010100101101110110110111100001110101101101001011
256
您正在打印一个数组,该包在各个字节的二进制表示形式之间添加了方括号
[]
和空格。此外,还可以在格式字符串中添加换行符

要仅获取位,可以使用如下循环:

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
作为填充(如果字节值小于8位)

哪些产出:

[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]
0110101110000110101100100111001111111111001101001111110011100001100111010110101110000000010011101111111101011010001111110101011101000111101011011010010011101010101000100010111100011101010010011100000000011110010100101101110110110111100001110101101101001011
256
试穿这些衣服