Class NumberFormatter

java.lang.Object
com.pnfsoftware.jeb.core.units.code.asm.render.NumberFormatter

@Ser public class NumberFormatter extends Object
A number formatter used to format immediates.

Notes:

  • max 64-bit long
  • signedness: applicable to octal/decimal/hexadecimal, N/A for binary/ascii
See Also:
  • Constructor Details

    • NumberFormatter

      public NumberFormatter()
      Create a hexadecimal unsigned number formatter.
    • NumberFormatter

      public NumberFormatter(NumberFormatter defaultNumberFormatter)
      Create a number formatter by copying another formatter.
      Parameters:
      defaultNumberFormatter - formatter to copy
  • Method Details

    • getBase

      public NumberFormatter.NumberBase getBase()
      Retrieve the rendering base.
      Returns:
      rendering base
    • setBase

      public void setBase(NumberFormatter.NumberBase base)
      Set the rendering base.
      Parameters:
      base - rendering base
    • rotateBase

      public NumberFormatter.NumberBase rotateBase()
      Rotate to the next rendering base.
      Returns:
      new rendering base
    • setSignedNumber

      public void setSignedNumber(boolean signedNumber)
      Set whether numbers should be treated as signed.
      Parameters:
      signedNumber - true to render as signed
    • isSignedNumber

      public boolean isSignedNumber()
      Determine whether numbers are treated as signed.
      Returns:
      true if signed rendering is enabled
    • setHexaNotationType

      public void setHexaNotationType(NumberFormatter.HexaNotationType hexaNotationType)
      Set the hexadecimal notation style.
      Parameters:
      hexaNotationType - hexadecimal notation style
    • getHexaNotationType

      public NumberFormatter.HexaNotationType getHexaNotationType()
      Retrieve the hexadecimal notation style.
      Returns:
      hexadecimal notation style
    • getEndianness

      public Endianness getEndianness()
      Retrieve endianness. Use
      Returns:
      endianness
    • setEndianness

      public void setEndianness(Endianness endianness)
      Change endianness. Note that default NumberFormatter consider that data is Little Endian ordered (meaning that ascii representation will be flipped in comparison to raw value).
      Parameters:
      endianness - endianness
    • setConstantsFormatterOverride

      public void setConstantsFormatterOverride(ConstantsFormatter cf)
      Set a constants formatter override.
      Parameters:
      cf - constants formatter, or null
    • hasConstantsFormatterOverride

      public boolean hasConstantsFormatterOverride()
      Determine whether a constants formatter override is set.
      Returns:
      true if an override is set
    • setForcePositiveRenderingForNonBase10

      public void setForcePositiveRenderingForNonBase10(boolean enabled)
      Force positive rendering for non-base-10 values.
      Parameters:
      enabled - true to force positive rendering
    • getForcePositiveRenderingForNonBase10

      public boolean getForcePositiveRenderingForNonBase10()
      Determine whether positive rendering is forced for non-base-10 values.
      Returns:
      true if enabled
    • format

      public String format(int bitsize, long rawValue)
      Format a number using the formatter's current settings.
      Parameters:
      bitsize - value size in bits
      rawValue - raw value
      Returns:
      formatted value
    • format

      public String format(int bitsize, long rawValue, NumberFormatter.NumberBase base, boolean treatAsSignedNumber)
      Format a number.
      Parameters:
      bitsize - value size in bits
      rawValue - raw value
      base - rendering base
      treatAsSignedNumber - true to treat the value as signed
      Returns:
      formatted value
    • format

      public String format(int bitsize, BigInteger rawValue)
      Format a large number using the formatter's current settings.
      Parameters:
      bitsize - value size in bits
      rawValue - raw value
      Returns:
      formatted value
    • format

      public String format(int bitsize, BigInteger rawValue, NumberFormatter.NumberBase base, boolean treatAsSignedNumber)
      Trivial implementation of a BigInteger formatter. Reverts to using format(int, long, NumberBase, boolean) if bitsize is <= 64.
      Parameters:
      bitsize - value size in bits
      rawValue - raw value
      base - rendering base
      treatAsSignedNumber - true to treat the value as signed
      Returns:
      formatted value