Class ISOUtil

java.lang.Object
org.jpos.iso.ISOUtil

public class ISOUtil extends Object
various functions needed to pack/unpack ISO-8583 fields
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Charset
    Default charset for bytes transmissions over network
    static final Charset
    EBCDIC charset (IBM1047).
    static final String
    Deprecated.
    use CHARSET instead
    static final byte
    ASCII End of Text (ETX) control character.
    static final byte
    ASCII File Separator (FS) control character.
    static final byte
    ASCII Group Separator (GS) control character.
    static final String[]
    Pre-computed hex strings for each byte value (00-FF).
    static final byte
    ASCII Record Separator (RS) control character.
    static final byte
    ASCII Start of Text (STX) control character.
    static final Pattern
    Pattern for matching Unicode escape sequences.
    static final byte
    ASCII Unit Separator (US) control character.
  • Constructor Summary

    Constructors
    Constructor
    Description
    All methods in this class are static, so there's usually no need to instantiate it We provide this public constructor in order to deal with some legacy script integration that needs an instance of this class in a rendering context.
  • Method Summary

    Modifier and Type
    Method
    Description
    static byte[]
    asciiToEbcdic(byte[] a)
    Converts an ASCII byte array to an EBCDIC byte array.
    static void
    asciiToEbcdic(byte[] s, byte[] e, int offset)
    Converts an ASCII byte array to EBCDIC and copies the result into the destination array.
    static byte[]
    Converts an ASCII string to an EBCDIC byte array.
    static void
    asciiToEbcdic(String s, byte[] e, int offset)
    Converts an ASCII string to EBCDIC and copies the result into the destination array.
    static String
    bcd2str(byte[] b, int offset, int len, boolean padLeft)
    converts a BCD representation of a number to a String
    static byte[]
    converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))
    static byte[]
    bitSet2byte(BitSet b, int bytes)
    converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))
    static byte[]
    Converts a BitSet into an extended binary field used in pack routines.
    static int
    Converts a BitSet to an int value.
    static String
    bit representation of a BitSet suitable for dumps and debugging
    static String
    Right unPad with ' '
    static BitSet
    byte2BitSet(byte[] b, int offset, boolean bitZeroMeansExtended)
    Converts a binary representation of a Bitmap field into a Java BitSet
    static BitSet
    byte2BitSet(byte[] b, int offset, int maxBits)
    Converts a binary representation of a Bitmap field into a Java BitSet
    static BitSet
    byte2BitSet(BitSet bmap, byte[] b, int bitOffset)
    Converts a binary representation of a Bitmap field into a Java BitSet.
    static String
    byte2hex(byte[] bs)
    Converts a byte array into a hex string
    static String
    byte2hex(byte[] bs, int off, int length)
    Converts a byte array into a string of lower case hex chars.
    static int
    byte2int(byte[] bytes)
    Converts a big-endian byte array to an integer.
    static char
    Compute card's check digit (LUHN)
    static String[]
    charDecode(char delimiter, String s)
    Decodes a char encoded String as encoded by charEncode
    static String
    charDecode(String s, char delimiter, int i)
    Decodes a char encoded String returning element in position i
    static String
    charEncode(char delimiter, String... ss)
    Converts a string[] or multiple strings into one char-delimited String.
    static String[]
    Decodes a comma encoded String as encoded by commaEncode
    static String
    commaDecode(String s, int i)
    Decodes a comma encoded String returning element in position i
    static String
    Converts a string[] or multiple strings into one comma-delimited String.
    static byte[]
    concat(byte[] array1, byte[] array2)
    Concatenates two byte arrays (array1 and array2)
    static byte[]
    concat(byte[] array1, int beginIndex1, int length1, byte[] array2, int beginIndex2, int length2)
    Concatenates two byte arrays (array1 and array2)
    static byte[]
    Decodes a hex dump string (as produced by hexdump) back into a byte array.
    static String
    dumpString(byte[] b)
    converts a byte array to printable characters
    static String
    ebcdicToAscii(byte[] e)
    Converts an EBCDIC byte array to an ASCII string.
    static String
    ebcdicToAscii(byte[] e, int offset, int len)
    Converts a portion of an EBCDIC byte array to an ASCII string.
    static byte[]
    Converts an EBCDIC byte array to ASCII bytes.
    static byte[]
    ebcdicToAsciiBytes(byte[] e, int offset, int len)
    Converts a portion of an EBCDIC byte array to ASCII bytes.
    static String
    formatAmount(long l, int len)
    prepare long value used as amount for display (implicit 2 decimals)
    static String
    formatAmountConversionRate(double convRate)
    Format a string containing a amount conversion rate in the proper format
    static String
    formatDouble(double d, int len)
    format double value
    static String
    getRandomDigits(Random r, int l, int radix)
    Generates a string of l random digits using the given radix.
    static BitSet
    hex2BitSet(byte[] b, int offset, boolean bitZeroMeansExtended)
    Converts an ASCII representation of a Bitmap field into a Java BitSet
    static BitSet
    hex2BitSet(byte[] b, int offset, int maxBits)
    Converts an ASCII representation of a Bitmap field into a Java BitSet
    static BitSet
    hex2BitSet(BitSet bmap, byte[] b, int bitOffset)
    Converts an ASCII representation of a Bitmap field into a Java BitSet
    static byte[]
    hex2byte(byte[] b, int offset, int len)
    Converts a hex-encoded byte array to a binary byte array.
    static byte[]
    Converts a hex string into a byte array
    static byte[]
    hex2byte(String s, Charset charset)
    Converts a hex string into a byte array
    static String
    hex2str(byte[] b, int offset, int len, boolean padLeft)
    converts a a byte array to a String with padding support
    static String
    hexdump(byte[] b)
    Returns a formatted hexdump of a byte buffer.
    static String
    hexdump(byte[] b, int offset)
    Returns a formatted hexdump of a byte buffer starting at the given offset.
    static String
    hexdump(byte[] b, int offset, int len)
    Returns a formatted hexdump of a byte buffer region.
    static String
    hexDump(byte[] array, int offset, int length, Charset charSet)
    At times when the charset is not the default usual one the dump will have more unprintable characters than printable.
    static String
    hexor(String op1, String op2)
    Bitwise XOR between corresponding byte arrays represented in hex
    static String
    hexString(byte[] b)
    converts a byte array to hex string (suitable for dumps and ASCII packaging of Binary fields
    static String
    hexString(byte[] b, int offset, int len)
    converts a byte array to hex string (suitable for dumps and ASCII packaging of Binary fields
    static BitSet
    int2BitSet(int value)
    Converts an int value to a BitSet.
    static BitSet
    int2BitSet(int value, int offset)
    Converts an int value to a BitSet with a given bit offset.
    static byte[]
    int2byte(int value)
    Converts an integer into a minimal big-endian byte array.
    static boolean
    Returns true if the string contains only alphanumeric characters.
    static boolean
    Returns true if the string is blank-filled (all space characters).
    static boolean
    isNumeric(String s, int radix)
    Returns true if the string represents a number in the specified radix.
    static boolean
    Returns true if the string is zero-filled (all '0' characters).
    static String
    millisToString(long millis)
    Converts a duration in milliseconds to a human-readable string (e.g.
    static String
    XML normalizer (default canonical)
    static String
    normalize(String s, boolean canonical)
    XML normalizer
    static byte[]
    padISO9797Method2(byte[] data)
    Pads data as per ISO/IEC 9797-1, method 2.
    static String
    padleft(String s, int len, char c)
    pad to the left
    static String
    padright(String s, int len, char c)
    pad to the right
    static double
    Parse currency amount conversion rate string
    static int
    parseInt(byte[] bArray)
    Converts a byte array to an integer of radix 10.
    static int
    parseInt(byte[] bArray, int radix)
    Converts a byte array to an integer of base radix.
    static int
    parseInt(char[] cArray)
    Converts a character array to an integer of radix 10.
    static int
    parseInt(char[] cArray, int radix)
    Converts a character array to an integer of base radix.
    static int
    Converts a String to an integer of radix 10.
    static int
    parseInt(String s, int radix)
    Converts a String to an integer of base radix.
    static String
    Protects PAN, Track2, CVC using the default underscore mask character.
    static String
    protect(String s, char mask)
    Protects PAN, Track2, CVC (suitable for logs).
    static String
    readableFileSize(long size)
    Formats a file size in bytes as a human-readable string (e.g.
    static void
    sleep(long millis)
    Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds.
    static byte[]
    str2bcd(String s, boolean padLeft)
    converts to BCD
    static byte[]
    str2bcd(String s, boolean padLeft, byte fill)
    converts to BCD
    static byte[]
    str2bcd(String s, boolean padLeft, byte[] d, int offset)
    converts to BCD
    static byte[]
    str2hex(String s, boolean padLeft, byte[] d, int offset)
    converts to BCD
    static String
    Reverses the \\uXXXX escapes produced by escapeUnicode-style helpers, returning the original characters.
    static String
    strpad(String s, int len)
    pads to the right
    static String
    strpadf(String s, int len)
    pads a string with 'F's (useful for pinoffset management)
    static String
    takeFirstN(String s, int n)
    Returns the first n characters of the passed String, left-padding with '0' where required.
    static String
    takeLastN(String s, int n)
    Returns the last n characters of the passed String, left-padding with '0' where required.
    static String
    Converts a string to ASCII by replacing characters above 0x7F with a space.
    static int[]
    Converts a whitespace-delimited string of numbers to an int array.
    static String
    Converts a string to Latin-1 by replacing characters above 0xFF with a space.
    static String[]
    Converts a whitespace-delimited string of tokens to a String array.
    static String
    Converts each character in the string to its Unicode escape sequence (\uXXXX format).
    static byte[]
    trim(byte[] array, int length)
    Trims a byte[] to a certain length
    static String
    trim String (if not null)
    static String
    reverse the effect of strpadf
    static String
    unPadLeft(String s, char c)
    Unpad from left.
    static String
    unPadRight(String s, char c)
    Unpad from right.
    static byte[]
    xor(byte[] op1, byte[] op2)
    Bitwise XOR between corresponding bytes
    static String
    zeropad(long l, int len)
    zeropads a long without throwing an ISOException (performs modulus operation)
    static String
    zeropad(String s, int len)
    left pad with '0'
    static String
    zeropadRight(String s, int len)
    Pads a string to the right with zeros.
    static String
    Left unPad with '0'

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ISOUtil

      public ISOUtil()
      All methods in this class are static, so there's usually no need to instantiate it We provide this public constructor in order to deal with some legacy script integration that needs an instance of this class in a rendering context.
  • Method Details

    • ebcdicToAscii

      public static String ebcdicToAscii(byte[] e)
      Converts an EBCDIC byte array to an ASCII string.
      Parameters:
      e - EBCDIC-encoded byte array
      Returns:
      decoded ASCII string
    • ebcdicToAscii

      public static String ebcdicToAscii(byte[] e, int offset, int len)
      Converts a portion of an EBCDIC byte array to an ASCII string.
      Parameters:
      e - EBCDIC-encoded byte array
      offset - start offset within the array
      len - number of bytes to convert
      Returns:
      decoded ASCII string
    • ebcdicToAsciiBytes

      public static byte[] ebcdicToAsciiBytes(byte[] e)
      Converts an EBCDIC byte array to ASCII bytes.
      Parameters:
      e - EBCDIC-encoded byte array
      Returns:
      ASCII-encoded byte array
    • ebcdicToAsciiBytes

      public static byte[] ebcdicToAsciiBytes(byte[] e, int offset, int len)
      Converts a portion of an EBCDIC byte array to ASCII bytes.
      Parameters:
      e - EBCDIC-encoded byte array
      offset - start offset within the array
      len - number of bytes to convert
      Returns:
      ASCII-encoded byte array
    • asciiToEbcdic

      public static byte[] asciiToEbcdic(String s)
      Converts an ASCII string to an EBCDIC byte array.
      Parameters:
      s - ASCII string to encode
      Returns:
      EBCDIC-encoded byte array
    • asciiToEbcdic

      public static byte[] asciiToEbcdic(byte[] a)
      Converts an ASCII byte array to an EBCDIC byte array.
      Parameters:
      a - ASCII-encoded byte array
      Returns:
      EBCDIC-encoded byte array
    • asciiToEbcdic

      public static void asciiToEbcdic(String s, byte[] e, int offset)
      Converts an ASCII string to EBCDIC and copies the result into the destination array.
      Parameters:
      s - ASCII string to encode
      e - destination byte array
      offset - start offset in the destination array
    • asciiToEbcdic

      public static void asciiToEbcdic(byte[] s, byte[] e, int offset)
      Converts an ASCII byte array to EBCDIC and copies the result into the destination array.
      Parameters:
      s - ASCII-encoded source byte array
      e - destination byte array
      offset - start offset in the destination array
    • padleft

      public static String padleft(String s, int len, char c) throws ISOException
      pad to the left
      Parameters:
      s - - original string
      len - - desired len
      c - - padding char
      Returns:
      padded string
      Throws:
      ISOException - on error
    • padright

      public static String padright(String s, int len, char c) throws ISOException
      pad to the right
      Parameters:
      s - - original string
      len - - desired len
      c - - padding char
      Returns:
      padded string
      Throws:
      ISOException - if String's length greater than pad length
    • trim

      public static String trim(String s)
      trim String (if not null)
      Parameters:
      s - String to trim
      Returns:
      String (may be null)
    • zeropad

      public static String zeropad(String s, int len) throws ISOException
      left pad with '0'
      Parameters:
      s - - original string
      len - - desired len
      Returns:
      zero padded string
      Throws:
      ISOException - if string's length greater than len
    • zeropad

      public static String zeropad(long l, int len)
      zeropads a long without throwing an ISOException (performs modulus operation)
      Parameters:
      l - the long
      len - the length
      Returns:
      zeropadded value
    • strpad

      public static String strpad(String s, int len)
      pads to the right
      Parameters:
      s - - original string
      len - - desired len
      Returns:
      space padded string
    • zeropadRight

      public static String zeropadRight(String s, int len)
      Pads a string to the right with zeros.
      Parameters:
      s - original string
      len - desired length
      Returns:
      zero-padded string (zeros appended on right)
    • padISO9797Method2

      public static byte[] padISO9797Method2(byte[] data)
      Pads data as per ISO/IEC 9797-1, method 2.
      Parameters:
      data - Data to be padded.
      Returns:
      Returns data padded as per ISO/IEC 9797-1, method 2.
    • str2bcd

      public static byte[] str2bcd(String s, boolean padLeft, byte[] d, int offset)
      converts to BCD
      Parameters:
      s - - the number
      padLeft - - flag indicating left/right padding
      d - The byte array to copy into.
      offset - Where to start copying into.
      Returns:
      BCD representation of the number
    • str2hex

      public static byte[] str2hex(String s, boolean padLeft, byte[] d, int offset)
      converts to BCD
      Parameters:
      s - - the number
      padLeft - - flag indicating left/right padding
      d - The byte array to copy into.
      offset - Where to start copying into.
      Returns:
      BCD representation of the number
    • str2bcd

      public static byte[] str2bcd(String s, boolean padLeft)
      converts to BCD
      Parameters:
      s - - the number
      padLeft - - flag indicating left/right padding
      Returns:
      BCD representation of the number
    • str2bcd

      public static byte[] str2bcd(String s, boolean padLeft, byte fill)
      converts to BCD
      Parameters:
      s - - the number
      padLeft - - flag indicating left/right padding
      fill - - fill value
      Returns:
      BCD representation of the number
    • bcd2str

      public static String bcd2str(byte[] b, int offset, int len, boolean padLeft)
      converts a BCD representation of a number to a String
      Parameters:
      b - - BCD representation
      offset - - starting offset
      len - - BCD field len
      padLeft - - was padLeft packed?
      Returns:
      the String representation of the number
    • hex2str

      public static String hex2str(byte[] b, int offset, int len, boolean padLeft)
      converts a a byte array to a String with padding support
      Parameters:
      b - - HEX representation
      offset - - starting offset
      len - - BCD field len
      padLeft - - was padLeft packed?
      Returns:
      the String representation of the number
    • hexString

      public static String hexString(byte[] b)
      converts a byte array to hex string (suitable for dumps and ASCII packaging of Binary fields
      Parameters:
      b - - byte array
      Returns:
      String representation
    • dumpString

      public static String dumpString(byte[] b)
      converts a byte array to printable characters
      Parameters:
      b - - byte array
      Returns:
      String representation
    • hexString

      public static String hexString(byte[] b, int offset, int len)
      converts a byte array to hex string (suitable for dumps and ASCII packaging of Binary fields
      Parameters:
      b - - byte array
      offset - - starting position
      len - the length
      Returns:
      String representation
    • bitSet2String

      public static String bitSet2String(BitSet b)
      bit representation of a BitSet suitable for dumps and debugging
      Parameters:
      b - - the BitSet
      Returns:
      string representing the bits (i.e. 011010010...)
    • bitSet2byte

      public static byte[] bitSet2byte(BitSet b)
      converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))
      Parameters:
      b - - the BitSet
      Returns:
      binary representation
    • bitSet2byte

      public static byte[] bitSet2byte(BitSet b, int bytes)
      converts a BitSet into a binary field used in pack routines This method will set bits 0 (and 65) if there's a secondary (and tertiary) bitmap (i.e., if the bitmap length is > 64 (and > 128))
      Parameters:
      b - - the BitSet
      bytes - - number of bytes to return
      Returns:
      binary representation
    • bitSet2Int

      public static int bitSet2Int(BitSet bs)
      Converts a BitSet to an int value.
      Parameters:
      bs - the BitSet to convert
      Returns:
      integer representation of the BitSet
    • int2BitSet

      public static BitSet int2BitSet(int value)
      Converts an int value to a BitSet.
      Parameters:
      value - the integer to convert
      Returns:
      BitSet representation of the value
    • int2BitSet

      public static BitSet int2BitSet(int value, int offset)
      Converts an int value to a BitSet with a given bit offset.
      Parameters:
      value - the integer to convert
      offset - bit offset to apply when setting bits
      Returns:
      BitSet representation of the value at the given offset
    • byte2BitSet

      public static BitSet byte2BitSet(byte[] b, int offset, boolean bitZeroMeansExtended)
      Converts a binary representation of a Bitmap field into a Java BitSet
      Parameters:
      b - - binary representation
      offset - - staring offset
      bitZeroMeansExtended - - true for ISO-8583
      Returns:
      java BitSet object
    • byte2BitSet

      public static BitSet byte2BitSet(byte[] b, int offset, int maxBits)
      Converts a binary representation of a Bitmap field into a Java BitSet
      Parameters:
      b - - binary representation
      offset - - staring offset
      maxBits - - max number of bits (supports 64,128 or 192)
      Returns:
      java BitSet object
    • byte2BitSet

      public static BitSet byte2BitSet(BitSet bmap, byte[] b, int bitOffset)
      Converts a binary representation of a Bitmap field into a Java BitSet. The byte[] will be fully consumed, and fed into the given BitSet starting at bitOffset+1
      Parameters:
      bmap - - BitSet
      b - - hex representation
      bitOffset - - (i.e. 0 for primary bitmap, 64 for secondary)
      Returns:
      the same java BitSet object given as first argument
    • hex2BitSet

      public static BitSet hex2BitSet(byte[] b, int offset, boolean bitZeroMeansExtended)
      Converts an ASCII representation of a Bitmap field into a Java BitSet
      Parameters:
      b - - hex representation
      offset - - starting offset
      bitZeroMeansExtended - - true for ISO-8583
      Returns:
      java BitSet object
    • hex2BitSet

      public static BitSet hex2BitSet(byte[] b, int offset, int maxBits)
      Converts an ASCII representation of a Bitmap field into a Java BitSet
      Parameters:
      b - - hex representation
      offset - - starting offset
      maxBits - - max number of bits (supports 8, 16, 24, 32, 48, 52, 64,.. 128 or 192)
      Returns:
      java BitSet object
    • hex2BitSet

      public static BitSet hex2BitSet(BitSet bmap, byte[] b, int bitOffset)
      Converts an ASCII representation of a Bitmap field into a Java BitSet
      Parameters:
      bmap - - BitSet
      b - - hex representation
      bitOffset - - (i.e. 0 for primary bitmap, 64 for secondary)
      Returns:
      java BitSet object
    • hex2byte

      public static byte[] hex2byte(byte[] b, int offset, int len)
      Converts a hex-encoded byte array to a binary byte array.
      Parameters:
      b - source byte array containing hex digits
      offset - starting offset
      len - number of bytes in destination (processes len*2)
      Returns:
      byte[len]
    • hex2byte

      public static byte[] hex2byte(String s)
      Converts a hex string into a byte array
      Parameters:
      s - source string (with Hex representation)
      Returns:
      byte array
    • hex2byte

      public static byte[] hex2byte(String s, Charset charset)
      Converts a hex string into a byte array
      Parameters:
      s - source string (with Hex representation)
      charset - character set to be used
      Returns:
      byte array
    • byte2hex

      public static String byte2hex(byte[] bs)
      Converts a byte array into a hex string
      Parameters:
      bs - source byte array
      Returns:
      hexadecimal representation of bytes
    • int2byte

      public static byte[] int2byte(int value)
      Converts an integer into a minimal big-endian byte array.
      Parameters:
      value - the integer to convert
      Returns:
      bytes representation of integer
    • byte2int

      public static int byte2int(byte[] bytes)
      Converts a big-endian byte array to an integer.
      Parameters:
      bytes - the byte array to convert
      Returns:
      integer representation of bytes
    • byte2hex

      public static String byte2hex(byte[] bs, int off, int length)
      Converts a byte array into a string of lower case hex chars.
      Parameters:
      bs - A byte array
      off - The index of the first byte to read
      length - The number of bytes to read.
      Returns:
      the string of hex chars.
    • formatDouble

      public static String formatDouble(double d, int len)
      format double value
      Parameters:
      d - the amount
      len - the field len
      Returns:
      a String of fieldLen characters (right justified)
    • formatAmount

      public static String formatAmount(long l, int len) throws ISOException
      prepare long value used as amount for display (implicit 2 decimals)
      Parameters:
      l - value
      len - display len
      Returns:
      formated field
      Throws:
      ISOException - if the formatted value exceeds the requested length
    • normalize

      public static String normalize(String s, boolean canonical)
      XML normalizer
      Parameters:
      s - source String
      canonical - true if we want to normalize \r and \n as well
      Returns:
      normalized string suitable for XML Output
    • stripUnicode

      public static String stripUnicode(String s)
      Reverses the \\uXXXX escapes produced by escapeUnicode-style helpers, returning the original characters.
      Parameters:
      s - string possibly containing \\uXXXX escapes; may be null
      Returns:
      decoded string, or empty string when s is null
    • normalize

      public static String normalize(String s)
      XML normalizer (default canonical)
      Parameters:
      s - source String
      Returns:
      normalized string suitable for XML Output
    • protect

      public static String protect(String s, char mask)
      Protects PAN, Track2, CVC (suitable for logs).
      "40000101010001" is converted to "400001____0001"
      "40000101010001=020128375" is converted to "400001____0001=0201_____"
      "40000101010001D020128375" is converted to "400001____0001D0201_____"
      "123" is converted to "___"
      
      Parameters:
      s - string to be protected
      mask - char used to protect the string
      Returns:
      'protected' String
    • protect

      public static String protect(String s)
      Protects PAN, Track2, CVC using the default underscore mask character.
      Parameters:
      s - string to be protected
      Returns:
      'protected' String
    • toIntArray

      public static int[] toIntArray(String s)
      Converts a whitespace-delimited string of numbers to an int array.
      Parameters:
      s - whitespace-delimited string of integer values
      Returns:
      array of parsed integers
    • toStringArray

      public static String[] toStringArray(String s)
      Converts a whitespace-delimited string of tokens to a String array.
      Parameters:
      s - whitespace-delimited string of tokens
      Returns:
      array of string tokens
    • xor

      public static byte[] xor(byte[] op1, byte[] op2)
      Bitwise XOR between corresponding bytes
      Parameters:
      op1 - byteArray1
      op2 - byteArray2
      Returns:
      an array of length = the smallest between op1 and op2
    • hexor

      public static String hexor(String op1, String op2)
      Bitwise XOR between corresponding byte arrays represented in hex
      Parameters:
      op1 - hexstring 1
      op2 - hexstring 2
      Returns:
      an array of length = the smallest between op1 and op2
    • trim

      public static byte[] trim(byte[] array, int length)
      Trims a byte[] to a certain length
      Parameters:
      array - the byte[] to be trimmed
      length - the wanted length
      Returns:
      the trimmed byte[]
    • concat

      public static byte[] concat(byte[] array1, byte[] array2)
      Concatenates two byte arrays (array1 and array2)
      Parameters:
      array1 - first part
      array2 - last part
      Returns:
      the concatenated array
    • concat

      public static byte[] concat(byte[] array1, int beginIndex1, int length1, byte[] array2, int beginIndex2, int length2)
      Concatenates two byte arrays (array1 and array2)
      Parameters:
      array1 - first part
      beginIndex1 - initial index
      length1 - length
      array2 - last part
      beginIndex2 - last part index
      length2 - last part length
      Returns:
      the concatenated array
    • sleep

      public static void sleep(long millis)
      Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.
      Parameters:
      millis - the length of time to sleep in milliseconds.
    • zeroUnPad

      public static String zeroUnPad(String s)
      Left unPad with '0'
      Parameters:
      s - - original string
      Returns:
      zero unPadded string
    • blankUnPad

      public static String blankUnPad(String s)
      Right unPad with ' '
      Parameters:
      s - - original string
      Returns:
      blank unPadded string
    • unPadRight

      public static String unPadRight(String s, char c)
      Unpad from right.
      Parameters:
      s - - original string
      c - - padding char
      Returns:
      unPadded string.
    • unPadLeft

      public static String unPadLeft(String s, char c)
      Unpad from left.
      Parameters:
      s - - original string
      c - - padding char
      Returns:
      unPadded string.
    • isZero

      public static boolean isZero(String s)
      Returns true if the string is zero-filled (all '0' characters).
      Parameters:
      s - the string to test
      Returns:
      true if the string is zero-filled ( 0 char filled )
    • isBlank

      public static boolean isBlank(String s)
      Returns true if the string is blank-filled (all space characters).
      Parameters:
      s - the string to test
      Returns:
      true if the string is blank filled (space char filled)
    • isAlphaNumeric

      public static boolean isAlphaNumeric(String s)
      Returns true if the string contains only alphanumeric characters.
      Parameters:
      s - the string to test
      Returns:
      true if the string is alphanumeric
    • isNumeric

      public static boolean isNumeric(String s, int radix)
      Returns true if the string represents a number in the specified radix.
      Parameters:
      s - the string to test
      radix - the radix to use for digit validation
      Returns:
      true if the string represents a valid number in the given radix
    • bitSet2extendedByte

      public static byte[] bitSet2extendedByte(BitSet b)
      Converts a BitSet into an extended binary field used in pack routines. The result is always in the extended format: (16 bytes of length)

      Parameters:
      b - the BitSet
      Returns:
      binary representation
    • parseInt

      public static int parseInt(String s, int radix) throws NumberFormatException
      Converts a String to an integer of base radix.

      String constraints are:
      • Number must be less than 10 digits
      • Number must be positive
      Parameters:
      s - String representation of number
      radix - Number base to use
      Returns:
      integer value of number
      Throws:
      NumberFormatException - if the string contains non-digit characters or exceeds 9 digits
    • parseInt

      public static int parseInt(String s) throws NumberFormatException
      Converts a String to an integer of radix 10.

      String constraints are:
      • Number must be less than 10 digits
      • Number must be positive
      Parameters:
      s - String representation of number
      Returns:
      integer value of number
      Throws:
      NumberFormatException - if the string contains non-digit characters or exceeds 9 digits
    • parseInt

      public static int parseInt(char[] cArray, int radix) throws NumberFormatException
      Converts a character array to an integer of base radix.

      Array constraints are:
      • Number must be less than 10 digits
      • Number must be positive
      Parameters:
      cArray - Character Array representation of number
      radix - Number base to use
      Returns:
      integer value of number
      Throws:
      NumberFormatException - if the array contains non-digit characters or exceeds 9 digits
    • parseInt

      public static int parseInt(char[] cArray) throws NumberFormatException
      Converts a character array to an integer of radix 10.

      Array constraints are:
      • Number must be less than 10 digits
      • Number must be positive
      Parameters:
      cArray - Character Array representation of number
      Returns:
      integer value of number
      Throws:
      NumberFormatException - if the array contains non-digit characters or exceeds 9 digits
    • parseInt

      public static int parseInt(byte[] bArray, int radix) throws NumberFormatException
      Converts a byte array to an integer of base radix.

      Array constraints are:
      • Number must be less than 10 digits
      • Number must be positive
      Parameters:
      bArray - Byte Array representation of number
      radix - Number base to use
      Returns:
      integer value of number
      Throws:
      NumberFormatException - if the array contains non-digit characters or exceeds 9 digits
    • parseInt

      public static int parseInt(byte[] bArray) throws NumberFormatException
      Converts a byte array to an integer of radix 10.

      Array constraints are:
      • Number must be less than 10 digits
      • Number must be positive
      Parameters:
      bArray - Byte Array representation of number
      Returns:
      integer value of number
      Throws:
      NumberFormatException - if the array contains non-digit characters or exceeds 9 digits
    • hexdump

      public static String hexdump(byte[] b)
      Returns a formatted hexdump of a byte buffer.
      Parameters:
      b - a byte[] buffer
      Returns:
      hexdump string
    • hexdump

      public static String hexdump(byte[] b, int offset)
      Returns a formatted hexdump of a byte buffer starting at the given offset.
      Parameters:
      b - a byte[] buffer
      offset - starting offset
      Returns:
      hexdump string from offset to end of buffer
    • hexdump

      public static String hexdump(byte[] b, int offset, int len)
      Returns a formatted hexdump of a byte buffer region.
      Parameters:
      b - a byte[] buffer
      offset - starting offset
      len - the number of bytes to dump
      Returns:
      hexdump string for the specified region
    • strpadf

      public static String strpadf(String s, int len)
      pads a string with 'F's (useful for pinoffset management)
      Parameters:
      s - an [hex]string
      len - desired length
      Returns:
      string right padded with 'F's
    • trimf

      public static String trimf(String s)
      reverse the effect of strpadf
      Parameters:
      s - F padded string
      Returns:
      trimmed string
    • takeLastN

      public static String takeLastN(String s, int n) throws ISOException
      Returns the last n characters of the passed String, left-padding with '0' where required.
      Parameters:
      s - String to take from
      n - number of characters to take
      Returns:
      String (may be null)
      Throws:
      ISOException - if zero-padding fails
    • takeFirstN

      public static String takeFirstN(String s, int n) throws ISOException
      Returns the first n characters of the passed String, left-padding with '0' where required.
      Parameters:
      s - String to take from
      n - number of characters to take
      Returns:
      String (may be null)
      Throws:
      ISOException - if zero-padding fails
    • millisToString

      public static String millisToString(long millis)
      Converts a duration in milliseconds to a human-readable string (e.g. "1d 2h 3m 4s 500ms").
      Parameters:
      millis - duration in milliseconds
      Returns:
      human-readable duration string
    • formatAmountConversionRate

      public static String formatAmountConversionRate(double convRate) throws ISOException
      Format a string containing a amount conversion rate in the proper format

      Format: The leftmost digit (i.e., position 1) of this data element denotes the number of positions the decimal separator must be moved from the right. Positions 2–8 of this data element specify the rate. For example, a conversion rate value of 91234567 in this data element would equate to 0.001234567.

      Parameters:
      convRate - amount conversion rate
      Returns:
      a string containing a amount conversion rate in the proper format, which is suitable for creating fields 10 and 11
      Throws:
      ISOException - if zero-padding fails during formatting
    • parseAmountConversionRate

      public static double parseAmountConversionRate(String convRate)
      Parse currency amount conversion rate string

      Suitble for parse fields 10 and 11

      Parameters:
      convRate - amount conversion rate string (8 characters)
      Returns:
      parsed currency amount conversion rate as a double
      Throws:
      IllegalArgumentException - if the string is null or not exactly 8 characters
    • commaEncode

      public static String commaEncode(String... ss)
      Converts a string[] or multiple strings into one comma-delimited String. Takes care of escaping commas using a backlash
      Parameters:
      ss - string array to be comma encoded
      Returns:
      comma encoded string
      See Also:
    • commaDecode

      public static String[] commaDecode(String s)
      Decodes a comma encoded String as encoded by commaEncode
      Parameters:
      s - the command encoded String
      Returns:
      String[]
      See Also:
    • commaDecode

      public static String commaDecode(String s, int i)
      Decodes a comma encoded String returning element in position i
      Parameters:
      s - comma encoded string
      i - position (starts at 0)
      Returns:
      element in position i of comma encoded string, or null
    • calcLUHN

      public static char calcLUHN(String p)
      Compute card's check digit (LUHN)
      Parameters:
      p - PAN (without checkdigit)
      Returns:
      the checkdigit
    • getRandomDigits

      public static String getRandomDigits(Random r, int l, int radix)
      Generates a string of l random digits using the given radix.
      Parameters:
      r - random number generator to use
      l - number of digits to generate
      radix - the radix (base) for digit generation
      Returns:
      string of l random digits
    • readableFileSize

      public static String readableFileSize(long size)
      Formats a file size in bytes as a human-readable string (e.g. "1.5 MiB").
      Parameters:
      size - file size in bytes
      Returns:
      human-readable file size string
    • hexDump

      public static String hexDump(byte[] array, int offset, int length, Charset charSet)
      At times when the charset is not the default usual one the dump will have more unprintable characters than printable. The charset will allow printing of more printable character. Usually when your data is in EBCDIC format you will run into this. The standard hexdump that exists would print a byte array of F0F1F2 as F0 F1 F2 ... This hexdump, if the Charset.forName("IBM1047") is passedin as charset will print F0 F1 F2 | 123
      Parameters:
      array - the array that needs to be dumped.
      offset - From where the data needs to be dumped.
      length - The number of byte that ned to be dumped.
      charSet - The Charset encoding the array is i.
      Returns:
      The hexdump string.
    • decodeHexDump

      public static byte[] decodeHexDump(String s)
      Decodes a hex dump string (as produced by hexdump) back into a byte array.
      Parameters:
      s - hex dump string to decode
      Returns:
      decoded byte array
    • charEncode

      public static String charEncode(char delimiter, String... ss)
      Converts a string[] or multiple strings into one char-delimited String. Takes care of escaping char using a backlash NOTE: for backward compatibility, an empty String returns a zero-length array
      Parameters:
      delimiter - char used to delimit
      ss - string array to be char encoded
      Returns:
      char encoded string
      See Also:
    • charDecode

      public static String[] charDecode(char delimiter, String s)
      Decodes a char encoded String as encoded by charEncode
      Parameters:
      delimiter - char used to delimit
      s - the char encoded String
      Returns:
      String[]
      See Also:
    • charDecode

      public static String charDecode(String s, char delimiter, int i)
      Decodes a char encoded String returning element in position i
      Parameters:
      s - comma encoded string
      delimiter - char used to delimit
      i - position (starts at 0)
      Returns:
      element in position i of comma encoded string, or empty
    • toUnicodeString

      public static String toUnicodeString(String input)
      Converts each character in the string to its Unicode escape sequence (\uXXXX format).
      Parameters:
      input - the string to convert
      Returns:
      string with all characters encoded as Unicode escapes
    • toASCII

      public static String toASCII(String s)
      Converts a string to ASCII by replacing characters above 0x7F with a space.
      Parameters:
      s - the string to convert
      Returns:
      ASCII-safe string
    • toLatin

      public static String toLatin(String s)
      Converts a string to Latin-1 by replacing characters above 0xFF with a space.
      Parameters:
      s - the string to convert
      Returns:
      Latin-1-safe string