2019年3月8日金曜日

開発環境

プログラミング言語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 コメント:

コメントを投稿

関連コンテンツ