From fd4ff32e3c2f2252cea56a502d7f0555a0235f04 Mon Sep 17 00:00:00 2001 From: Ian Denhardt Date: Fri, 17 Feb 2023 20:15:41 -0500 Subject: [PATCH] Remove another use of fmt. --- internal/str/str.go | 20 ++++++++++++++++++++ rawpointer.go | 4 +--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/internal/str/str.go b/internal/str/str.go index 34d97d3d..84b4c21f 100644 --- a/internal/str/str.go +++ b/internal/str/str.go @@ -14,6 +14,26 @@ func Itod[T Int](n T) string { return strconv.FormatInt(int64(n), 10) } +// UToHex returns n formatted in hexidecimal. +func UToHex[T Uint](n T) string { + return strconv.FormatUint(uint64(n), 16) +} + +// ZeroPad pads value to the left with zeros, making the resulting string +// count bytes long. +func ZeroPad(count int, value string) string { + pad := count - len(value) + if pad < 0 { + panic("ZeroPad: count is less than len(value)") + } + buf := make([]byte, count) + for i := 0; i < pad; i++ { + buf[i] = '0' + } + copy(buf[:pad], value[:]) + return string(buf) +} + type Uint interface { ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uint } diff --git a/rawpointer.go b/rawpointer.go index bd74e784..2a5aeb61 100644 --- a/rawpointer.go +++ b/rawpointer.go @@ -1,8 +1,6 @@ package capnp import ( - "fmt" - "capnproto.org/go/capnp/v3/internal/str" ) @@ -250,7 +248,7 @@ func (p rawPointer) GoString() string { default: // other pointer if p.otherPointerType() != 0 { - return fmt.Sprintf("rawPointer(%#016x)", uint64(p)) + return "rawPointer(" + str.ZeroPad(16, str.UToHex(p)) + ")" } return "rawInterfacePointer(" + str.Utod(p.capabilityIndex()) + ")" }