開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) (Alan A.A. Donovan(著)、Brian W. Kernighan(著)、柴田 芳樹(翻訳)、丸善出版)の第4章(コンポジット型)、4.1(配列)、練習問題4.1の解答を求めてみる。
コード
package main
import (
"crypto/sha256"
"fmt"
)
const n = 10
func difference(a, b []byte) int {
ca := sha256.Sum256(a)
cb := sha256.Sum256(b)
fmt.Printf("%x\n%x\n", ca, cb)
count := 0
for i := range ca {
ba := ca[i]
bb := cb[i]
for j := 0; j < 8; j++ {
if (ba & 1) == (bb & 1) {
count++
}
ba >>= 1
bb >>= 1
}
}
return count
}
func main() {
a := []byte("Go")
b := []byte("go")
fmt.Printf("%s(%[1]v %[1]x) %s(%[2]v %[2]x) %v\n", a, b, difference(a, b))
}
入出力結果(cmd(コマンドプロンプト)、Terminal)
C:\Users\...>go run sample1.go 6cc8519b91584e8bd435d63341e0838a99721948718b1c9c1e9c358c64ba992a 4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33 Go([71 111] 476f) go([103 111] 676f) 124 C:\Users\...>
oは同じでGとgが違うだけで約256ビット(32バイト)の半分の124ビット異なる結果に。
0 コメント:
コメントを投稿