開発環境
- 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 コメント:
コメントを投稿