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
     
    static final String
    Deprecated.
    use CHARSET instead
    static final byte
     
    static final byte
     
    static final byte
     
    static final String[]
     
    static final byte
     
    static final byte
     
    static final Pattern
     
    static final byte
     
  • 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)
     
    static void
    asciiToEbcdic(byte[] s, byte[] e, int offset)
     
    static byte[]
     
    static void
    asciiToEbcdic(String s, byte[] e, int offset)
     
    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
     
    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 byte array of hex into 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[]
     
    static String
    dumpString(byte[] b)
    converts a byte array to printable characters
    static String
    ebcdicToAscii(byte[] e)
     
    static String
    ebcdicToAscii(byte[] e, int offset, int len)
     
    static byte[]
     
    static byte[]
    ebcdicToAsciiBytes(byte[] e, int offset, int len)
     
    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)
     
    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)
     
    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)
     
    static String
    hexdump(byte[] b, int offset)
     
    static String
    hexdump(byte[] b, int offset, int len)
     
    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)
     
    static BitSet
    int2BitSet(int value, int offset)
     
    static byte[]
    int2byte(int value)
    Converts an integer into a byte array of hex
    static boolean
    Return true if the string is alphanum.
    static boolean
     
    static boolean
    isNumeric(String s, int radix)
    Return true if the string represent a number in the specified radix.
    static boolean
     
    static String
    millisToString(long millis)
     
    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
     
    static String
    protect(String s, char mask)
    Protects PAN, Track2, CVC (suitable for logs).
    static String
    readableFileSize(long size)
     
    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
     
    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)
    return the first n characters of the passed String, left padding where required with 0
    static String
    takeLastN(String s, int n)
    return the last n characters of the passed String, left padding where required with 0
    static String
     
    static int[]
     
    static String
     
    static String[]
     
    static String
     
    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)
     
    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)
    • ebcdicToAscii

      public static String ebcdicToAscii(byte[] e, int offset, int len)
    • ebcdicToAsciiBytes

      public static byte[] ebcdicToAsciiBytes(byte[] e)
    • ebcdicToAsciiBytes

      public static byte[] ebcdicToAsciiBytes(byte[] e, int offset, int len)
    • asciiToEbcdic

      public static byte[] asciiToEbcdic(String s)
    • asciiToEbcdic

      public static byte[] asciiToEbcdic(byte[] a)
    • asciiToEbcdic

      public static void asciiToEbcdic(String s, byte[] e, int offset)
    • asciiToEbcdic

      public static void asciiToEbcdic(byte[] s, byte[] e, int offset)
    • 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)
    • 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)
    • int2BitSet

      public static BitSet int2BitSet(int value)
    • int2BitSet

      public static BitSet int2BitSet(int value, int 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)
      Parameters:
      b - source byte array
      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 byte array of hex
      Parameters:
      value -
      Returns:
      bytes representation of integer
    • byte2int

      public static int byte2int(byte[] bytes)
      Converts a byte array of hex into an integer
      Parameters:
      bytes -
      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
    • 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)
    • 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)
    • toIntArray

      public static int[] toIntArray(String s)
    • toStringArray

      public static String[] toStringArray(String s)
    • 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 ( 0 char filled )
    • isBlank

      public static boolean isBlank(String s)
      Returns:
      true if the string is blank filled (space char filled)
    • isAlphaNumeric

      public static boolean isAlphaNumeric(String s)
      Return true if the string is alphanum.
    • isNumeric

      public static boolean isNumeric(String s, int radix)
      Return true if the string represent a number in the specified 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • hexdump

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

      public static String hexdump(byte[] b, int offset)
      Parameters:
      b - a byte[] buffer
      offset - starting offset
    • hexdump

      public static String hexdump(byte[] b, int offset, int len)
      Parameters:
      b - a byte[] buffer
      offset - starting offset
      len - the Length
      Returns:
      hexdump
    • 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
      return the last n characters of the passed String, left padding where required with 0
      Parameters:
      s - String to take from
      n - nuber of characters to take
      Returns:
      String (may be null)
      Throws:
      ISOException
    • takeFirstN

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

      public static String millisToString(long millis)
    • 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, witch is suitable for create fields 10 and 11
      Throws:
      ISOException
    • parseAmountConversionRate

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

      Suitble for parse fields 10 and 11

      Parameters:
      convRate - amount conversation rate
      Returns:
      parsed currency amount conversation rate
      Throws:
      IllegalArgumentException
    • 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)
    • readableFileSize

      public static String readableFileSize(long size)
    • 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)
    • 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)
    • toASCII

      public static String toASCII(String s)
    • toLatin

      public static String toLatin(String s)