首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSS Nokalva中的Tbcd支持

OSS Nokalva中的Tbcd支持
EN

Stack Overflow用户
提问于 2012-02-03 19:51:52
回答 2查看 631关注 0票数 1

正如我所看到的,OSS Nokalva Java api支持BCD编码(ByteTool类有toBCD和parseBCD方法),但不支持TBCD。有谁知道怎么处理它吗?或者有谁知道如何在Java中实现从字符串到TBCD编码字节数组的转换,反之亦然?提前感谢。

EN

回答 2

Stack Overflow用户

发布于 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。

保罗

票数 1
EN

Stack Overflow用户

发布于 2012-02-06 17:04:36

我会对自己负责的。为了实现以字符串格式给出的十进制数的TBCD编码和解码,我做了以下方法:

此方法反转字节的高位和低位4位。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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字节数组并将其转换为字符串十进制的方法。

代码语言:javascript
复制
public static String toTBCD(byte[] tbcd){
for(int i=0; i<tbcd.length; i++) tbcd[i] = reverseByte(tbcd[i]);
return ByteTool.toBCD(tbcd);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9128236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档