Я предполагаю, что у вас есть шестигранная строка, представляющее сообщение в виде строки, в этом случае вы должны преобразовать его в массив байт.
Например, если у вас есть строка в качестве аргумента для вашего основного. В любом случае вы должны знать формат сообщения iso, содержащегося в этом шестнадцатеричном представлении. Например, если сообщение двоично, вам нужно выбрать ISO87BPackager, если это ascii, вам нужно выбрать ISO87APackager.
import org.jpos.iso.packager.ISO87BPackager;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISOUtil;
public class ParseISOMsg {
public static void main(String[] args) throws ISOException {
String hexmsg = args[0];
// convert hex string to byte array
byte[] bmsg =ISOUtil.hex2byte(hexmsg);
ISOMsg m = new ISOMsg();
// set packager, change ISO87BPackager for the matching one.
m.setPackager(new ISO87BPackager());
//unpack the message using the packager
m.unpack(bmsg);
//dump the message to standar output
m.dump(System.out, "");
}
}
Например, если вы звоните java -cp .:jpos.jar ParseISOMsg 0800002000000080000
он должен напечатать:
<isomsg>
<!-- org.jpos.iso.packager.ISO87BPackager -->
<field id="0" value="0800"/>
<field id="11" value="123456"/>
<field id="41" value="12345678"/>
</isomsg>
Я не знаю, если МСС имеет метод распаковывать из шестнадцатеричной строки сообщения, но вы можете Исли написать некоторый метод 'hexaStringToAscci 'Я мог бы помочь вам в этом, если каждый байт представлен двумя шестнадцатеричными символами. – Nico
Привет !!! Проблема в том, что все поля находятся в разных форматах, некоторые из них в char, другие - числа, другие - значения битмапа, я не думаю, что вы можете преобразовать все поля в значение ASCII. – julienasefth
Да, вы правы. Вы можете преобразовать свою «шестнадцатеричную строку» в байтовый [] десятичный массив, после чего вы можете «распаковать» это значение. Если вы хотите, я мог бы ответить на примере этого преобразования. – Nico