2 回答

TA貢獻1815條經驗 獲得超10個贊
sha3.New224()不能用 uint64 類型表示。
有許多哈希類型 - 并且大小不同。Go標準庫選擇一個非常通用的接口來涵蓋所有類型的哈希:https://golang.org/pkg/hash/#Hash
type Hash interface {
io.Writer
Sum(b []byte) []byte
Reset()
Size() int
BlockSize() int
}
話雖如此,一些Go哈希實現可以選擇性地包括額外的方法,如哈希。哈希64:
type Hash64 interface {
Hash
Sum64() uint64
}
其他人可以實現編碼。BinaryMarshaler:
type BinaryMarshaler interface {
MarshalBinary() (data []byte, err error)
}
可以用來保留哈希狀態。
sha3.New224()不實現上述 2 個接口,但哈希實現。要執行運行時檢查,請執行以下操作:crc64
h64, ok := h.(hash.Hash64)
if ok {
fmt.Printf("64-bit: %d\n", h64.Sum64())
}
工作示例:https://play.golang.org/p/uLUfw0gMZka

TA貢獻1942條經驗 獲得超3個贊
(有關更簡單的版本,請參閱彼得的評論。
將一系列字節解釋為 a 與將一系列十進制數字解釋為任意大數字相同。例如,要將數字 1234 轉換為“數字”,請執行以下操作:big.Int
從 0 開始
乘以 10 = 0
加 1 = 1
乘以 10 = 10
加 2 = 12
乘以 10 = 120
加 3 = 123
乘以 10 = 1230
加 4 = 1234
這同樣適用于字節?!皵底帧敝皇且?56為基數,而不是以10為基數:
val := big.NewInt(0)for i := 0; i < h.Size(); i++ { val.Lsh(val, 8) val.Add(val, big.NewInt(int64(d[i]))) }
(Lsh
是左移。左移 8 位與乘以 256 相同。
- 2 回答
- 0 關注
- 281 瀏覽
添加回答
舉報