48 lines
949 B
Go
48 lines
949 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/base64"
|
||
|
"encoding/hex"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/filecoin-project/lotus/chain/types"
|
||
|
"gopkg.in/urfave/cli.v2"
|
||
|
)
|
||
|
|
||
|
var bigIntParseCmd = &cli.Command{
|
||
|
Name: "bigint",
|
||
|
Description: "parse encoded big ints",
|
||
|
Flags: []cli.Flag{
|
||
|
&cli.StringFlag{
|
||
|
Name: "enc",
|
||
|
Value: "base64",
|
||
|
Usage: "specify input encoding to parse",
|
||
|
},
|
||
|
},
|
||
|
Action: func(cctx *cli.Context) error {
|
||
|
val := cctx.Args().Get(0)
|
||
|
|
||
|
var dec []byte
|
||
|
switch cctx.String("enc") {
|
||
|
case "base64":
|
||
|
d, err := base64.StdEncoding.DecodeString(val)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("decoding base64 value: %w", err)
|
||
|
}
|
||
|
dec = d
|
||
|
case "hex":
|
||
|
d, err := hex.DecodeString(val)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("decoding hex value: %w", err)
|
||
|
}
|
||
|
dec = d
|
||
|
default:
|
||
|
return fmt.Errorf("unrecognized encoding: %s", cctx.String("enc"))
|
||
|
}
|
||
|
|
||
|
iv := types.BigFromBytes(dec)
|
||
|
fmt.Println(iv.String())
|
||
|
return nil
|
||
|
},
|
||
|
}
|