fmtTest{"%x", b64, "ffffffffffffffff"},
fmtTest{"%b", 7, "111"},
fmtTest{"%b", b64, "1111111111111111111111111111111111111111111111111111111111111111"},
+ fmtTest{"%b", -6, "-110"},
fmtTest{"%e", float64(1), "1.000000e+00"},
fmtTest{"%e", float64(1234.5678e3), "1.234568e+06"},
fmtTest{"%e", float64(1234.5678e-8), "1.234568e-05"},
// fmt_uo formats a uint in octal.
func (f *fmt) fmt_uo(v uint) { f.integer(int64(v), 8, unsigned, ldigits) }
-// fmt_b64 formats a uint64 in binary.
-func (f *fmt) fmt_b64(v uint64) { f.integer(int64(v), 2, unsigned, ldigits) }
+// fmt_b64 formats an int64 in binary.
+func (f *fmt) fmt_b64(v int64) { f.integer(v, 2, signed, ldigits) }
-// fmt_b32 formats a uint32 in binary.
-func (f *fmt) fmt_b32(v uint32) { f.integer(int64(v), 2, unsigned, ldigits) }
-
-// fmt_b formats a uint in binary.
-func (f *fmt) fmt_b(v uint) { f.integer(int64(v), 2, unsigned, ldigits) }
+// fmt_ub64 formats a uint64 in binary.
+func (f *fmt) fmt_ub64(v uint64) { f.integer(int64(v), 2, unsigned, ldigits) }
// fmt_c formats a Unicode character.
func (f *fmt) fmt_c(v int) { f.padString(string(v)) }
// int
case 'b':
- if v, _, ok := getInt(field); ok {
- p.fmt.fmt_b64(uint64(v)) // always unsigned
+ if v, signed, ok := getInt(field); ok {
+ if signed {
+ p.fmt.fmt_b64(v)
+ } else {
+ p.fmt.fmt_ub64(uint64(v))
+ }
} else if v, ok := getFloat32(field); ok {
p.fmt.fmt_fb32(v)
} else if v, ok := getFloat64(field); ok {