正如我所看到的,OSS Nokalva Java api支持BCD编码(ByteTool类有toBCD和parseBCD方法),但不支持TBCD。有谁知道怎么处理它吗?或者有谁知道如何在Java中实现从字符串到TBCD编码字节数组的转换,反之亦然?提前感谢。
发布于 2012-02-10 03:28:59
OSS Nokalva在他们的知识库中有一个关于TBCD的问答。请看http://www.oss.com/asn1/knowledge-center/asn1-java/209.html,你可以下载一个处理TBCD的例子。
请注意,这里前面的答案有不正确的代码,它依赖于现有的ByteTool BCD方法,这些方法在一般情况下不能与TBCD一起使用。该代码将TBCD处理为交换了半字节的BCD。当TBCD不是有效的BCD时,ByteTool BCD代码将抛出有效TBCD的NumberFormatException。有关正确处理TBCD的代码,请参阅上面的URL。
保罗
发布于 2012-02-06 17:04:36
我会对自己负责的。为了实现以字符串格式给出的十进制数的TBCD编码和解码,我做了以下方法:
此方法反转字节的高位和低位4位。
private byte reverseByte(byte bInput){
return (byte) ((byte)((bInput & (byte)0x0f)<<4) + (byte)((bInput &(byte)0xf0)>>>4)&0x0f));
}接受输入十进制字符串并返回TBCD编码字节数组的方法。该方法使用来自OSS Nokalva java api的ByteTool类的方法parseBCD。
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);
}https://stackoverflow.com/questions/9128236
复制相似问题