X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Fasm%2FAsmNumberUtil.java;h=38323fa80200f62bdd1f1337d2a805f9e815ecda;hb=5e1f40d3029fbd0c77e430d378bb0746f981e4cc;hp=580c32494be7f644b24d8dc5f49447e33924f4f2;hpb=4c2b7a2100e55b5e4bf59666b9684d5a996bd0fb;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmNumberUtil.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmNumberUtil.java index 580c3249..38323fa8 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmNumberUtil.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmNumberUtil.java @@ -172,6 +172,14 @@ public final class AsmNumberUtil * Formats a {@link BigInteger} in accordance with the pattern associated with the supplied {@link NumberType} */ public static String toString(BigInteger number, NumberType type) + { + return toString(number, type, 0); + } + + /** + * Formats a {@link BigInteger} in accordance with the pattern associated with the supplied {@link NumberType} + */ + public static String toString(BigInteger number, NumberType type, int minBits) { String pattern; switch (type) @@ -189,9 +197,36 @@ public final class AsmNumberUtil case HEXADECIMAL: pattern = preferredHexPat; } + + int digits; + + switch (type.radix) + { + case 2: + digits = minBits; + break; + case 8: + digits = minBits / 3; + break; + case 16: + digits = minBits / 4; + break; + default: + digits = 0; + } + + String numberString, sign; if (number.signum() < 0) - return String.format(pattern, "-", number.abs().toString(type.radix)); - return String.format(pattern, "", number.toString(type.radix)); + { + sign = "-"; + numberString = number.abs().toString(type.radix); + } else + { + sign = ""; + numberString = number.toString(type.radix); + } + numberString = "0".repeat(Integer.max(0, digits - numberString.length())) + numberString; + return String.format(pattern, sign, numberString); } public enum NumberType