我正在使用 MD5 实现,并使用 wikipedia 上的伪代码为整数正弦的二进制部分编写以下代码。我发现我的输出与广泛可用的预计算表之间存在差异。
我试图弄清楚我的代码是否不正确或维基百科上的伪代码不正确。在下面的代码中替换math.Floor为math.Ceil修复了预计算表和我的输出之间的差异。
package main
import "fmt"
import "math"
func main() {
var i float64
for i < 64 {
x := uint(math.Floor(float64(math.MaxUint32) * math.Abs(math.Sin(i+1))))
fmt.Printf("%d : %x\n", uint(i+1), x)
i = i + 1
}
}
1 : d76aa477
2 : e8c7b755
3 : 242070db
4 : c1bdceee
第 1 行和第 2 行与预先计算的表不同,而第 3 行是一致的。
白猪掌柜的
相关分类