Makefile: add pickrand
[cmccabe-bin] / bytor.go
1 package main
2
3 import "fmt"
4 import "os"
5 import "strconv"
6
7 func usage(retval int) {
8         fmt.Printf("bytor: converts bytes between hex and decimal.\n" +
9                 "\n" +
10                 "usage: bytor [flags] [number-to-convert]\n" +
11                 "\n" +
12                 "Numbers with the prefix '0x' will be interpreted as \n" +
13                 "hexadecimal; others will be interpreted as decimal.\n" +
14                 "\n" +
15                 "Flags:\n" +
16                 "-d:         Decimal output (default is hex.)\n" +
17                 "-h/--help:  This help message\n")
18         os.Exit(retval)
19 }
20
21 func main() {
22         formatStr := "0x%02x\n"
23         i := 1
24         if (len(os.Args) < 2) {
25                 usage(1)
26         }
27         if ((os.Args[i] == "-h") || (os.Args[i] == "--help")) {
28                 usage(0)
29         }
30         if (os.Args[i] == "-d") {
31                 formatStr = "%d\n"
32                 i++
33         }
34         if (i >= len(os.Args)) {
35                 usage(1)
36         }
37         val, err := strconv.ParseInt(os.Args[i], 0, 8)
38         if (err != nil) {
39                 fmt.Printf("Error parsing input: %v\n", err)
40                 os.Exit(1)
41         }
42         if (val < 0) {
43                 val = 0x100 + val;
44         }
45         fmt.Printf(formatStr, val)
46 }