package main import "fmt" import "os" import "strconv" func usage(retval int) { fmt.Printf("bytor: converts bytes between hex and decimal.\n" + "\n" + "usage: bytor [flags] [number-to-convert]\n" + "\n" + "Numbers with the prefix '0x' will be interpreted as \n" + "hexadecimal; others will be interpreted as decimal.\n" + "\n" + "Flags:\n" + "-d: Decimal output (default is hex.)\n" + "-h/--help: This help message\n") os.Exit(retval) } func main() { formatStr := "0x%02x\n" i := 1 if (len(os.Args) < 2) { usage(1) } if ((os.Args[i] == "-h") || (os.Args[i] == "--help")) { usage(0) } if (os.Args[i] == "-d") { formatStr = "%d\n" i++ } if (i >= len(os.Args)) { usage(1) } val, err := strconv.ParseInt(os.Args[i], 0, 8) if (err != nil) { fmt.Printf("Error parsing input: %v\n", err) os.Exit(1) } if (val < 0) { val = 0x100 + val; } fmt.Printf(formatStr, val) }