Я отвечу про себя. Чтобы реализовать кодирование и декодирование TBCD десятичного числа, заданного в формате String, я сделал следующие методы:
Этот метод инвертирует верхний и младший 4 бита байта.
private byte reverseByte(byte bInput){
return (byte) ((byte)((bInput & (byte)0x0f)<<4) + (byte)((bInput &(byte)0xf0)>>>4)&0x0f));
}
Метод, который принимает входную десятичную строку и возвращает кодированный байтовый массив TBCD. Этот метод использует метод parseBCD из класса ByteTool OSS Nokalva Java API.
public static byte[] parseTBCD(String input){
byte[] tbcd = ByteTool.parseBCD(input);
for(int i=0; i<tbcd.length; i++) tbcd[i] = reverseByte(tbcd[i]);
return tbcd;
}
И метод, который принимает байтовый массив TBCD и преобразует его в строковое десятичное число.
public static String toTBCD(byte[] tbcd){
for(int i=0; i<tbcd.length; i++) tbcd[i] = reverseByte(tbcd[i]);
return ByteTool.toBCD(tbcd);
}