如何将解压缩的十进制转换回COMP-3?
我问了一个有关转换COMP字段的问题,但没有得到任何答案。
我希望堆栈溢出可以帮助我解决这个问题。
我成功地将COMP-3转换为十进制。我需要您的帮助,以任何高级编程语言(最好使用Java或c#.net)将解压缩的十进制数转换回COMP-3。
回答:
用压缩十进制-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也具有执行转换的代码),进行一些谷歌搜索。
以上是 如何将解压缩的十进制转换回COMP-3? 的全部内容, 来源链接: utcz.com/qa/409787.html