用压缩十进制-123表示为X‘123d’(最后一个ny
c,d或f是符号)。处理压缩十进制的最简单方法之一是简单地将字节转换为十六进制字符串(或根据需要反之亦然),然后使用常规字符串操作。这可能不是最有效的,但是很容易实现。
因此,将Integer(值)转换为压缩的十进制是大致步骤(注意:我尚未测试代码)
String sign = "c";if (value < 0) { sign = "d"; value = -1 * value;}String val = value + "d"byte[] comp3Bytes = new BigInteger(val, 16).toByteArray();以下是一些与comp3相互转换的示例代码,要从字节数组中检索压缩的十进制,请参见http://record-
editor.svn.sourceforge.net/viewvc/record-
editor/Source/JRecord/src中的
getMainframePackedDecimal方法/net/sf/JRecord/Common/Conversion.java?revision=3&view=markup
并设置打包的十进制,请参见http://record-editor.svn.sourceforge.net/viewvc/record-
editor/Source/JRecord/src/net/sf/JRecord/Types/TypePackedDecimal.java?revision=3&view中的
setField =标记
这两个例程均采用字节数组,起始位置和字段位置的长度。
在网络上还有其他执行此操作的示例(我认为JRanch也具有执行转换的代码),进行一些谷歌搜索。



