From 81a302b197caff599ed82fb3ccda19089a6c1cb4 Mon Sep 17 00:00:00 2001 From: Miran Date: Fri, 30 Oct 2020 10:04:53 +0100 Subject: [PATCH] fix `toHex` - make it work with int literals (#15770) (cherry picked from commit c0fdc8b215b02736cdb1c275a92b1d5a513f8bad) --- lib/pure/strutils.nim | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim index 20ad2f5174..94bdafc106 100644 --- a/lib/pure/strutils.nim +++ b/lib/pure/strutils.nim @@ -981,6 +981,18 @@ proc toHex*(x: BiggestInt, len: Positive): string {.noSideEffect, doAssert c.toHex(6) == "FFFFF8" toHexImpl(cast[BiggestUInt](x), len, x < 0) +proc toHex*(x: int, len: Positive): string {.noSideEffect.} = + ## Converts `x` to its hexadecimal representation. + ## + ## The resulting string will be exactly `len` characters long. No prefix like + ## ``0x`` is generated. `x` is treated as an unsigned value. + runnableExamples: + doAssert toHex(62, 3) == "03E" + doAssert toHex(4097, 3) == "001" + doAssert toHex(4097, 4) == "1001" + doAssert toHex(-8, 6) == "FFFFF8" + toHexImpl(cast[BiggestUInt](x), len, x < 0) + proc toHex*[T: SomeInteger](x: T): string {.noSideEffect.} = ## Shortcut for ``toHex(x, T.sizeof * 2)`` runnableExamples: