|
|
- package vm
-
- import (
- "math/big"
- )
-
- // To256
- //
- // "cast" the big int to a 256 big int (i.e., limit to)
- var tt256 = new(big.Int).Lsh(big.NewInt(1), 256)
- var tt256m1 = new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 256), big.NewInt(1))
- var tt255 = new(big.Int).Lsh(big.NewInt(1), 255)
-
- func U256(x *big.Int) *big.Int {
- x.And(x, tt256m1)
- return x
- }
-
- func S256(x *big.Int) *big.Int {
- if x.Cmp(tt255) < 0 {
- return x
- } else {
- // We don't want to modify x, ever
- return new(big.Int).Sub(x, tt256)
- }
- }
|