On Sat, Aug 19, 2023 at 11:41:56AM +0700, John Naylor wrote:
> This looks nicer, but still doesn't save the starting pointer, and so needs
> to lug around that big honking macro. This is what I mean:
>
> static inline text *
> convert_to_base(uint64 value, int base)
> {
> const char *digits = "0123456789abcdef";
> /* We size the buffer for to_binary's longest possible return value. */
> char buf[sizeof(uint64) * BITS_PER_BYTE];
> char * const end = buf + sizeof(buf);
> char *ptr = end;
>
> Assert(base > 1);
> Assert(base <= 16);
>
> do
> {
> *--ptr = digits[value % base];
> value /= base;
> } while (ptr > buf && value);
>
> return cstring_to_text_with_len(ptr, end - ptr);
> }
I will use this in v8.
--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com