EBCDIC 解压 comp-3 数据 returns 40404** Java

EBCDIC unpacking comp-3 data returns 40404** in Java

我已经使用下面 link 中提供的解包数据逻辑为 java How to unpack COMP-3 digits using Java? 但是对于源中的空数据,它 returns 404040404 就像 Java 解压代码一样。我知道这是 ebcdic 中的 space,但是如何通过处理此 space 或避免它来解压缩。

我们必须处理两个问题。首先,数据是有效的 comp-3 数据,其次,是自提到 Comp-3 以来被 COBOL 等旧语言实现视为“有效”的数据。

如果偏移量没有错位,则现有程序会将空格解释为 0 而不是空格。这是不正确的,但可能是为容忍这种不良行为而设计的旧程序的产物。

我在传统商店中采用的方法(假设没有错位)是将“空格”(0x404040404040 的序列)视为零。这将是一个遗留检查,用于将字段与空格进行比较,然后假设 0x00000000000f 为实际默认值。这是个别商店必须确定的事情,不被认为是通用的编程方法。

就 Java 而言,必须记住字节是“带符号的”,因此根据代码的编写方式比较可能会很棘手。唯一的“无符号”数据类型 I 记得 java 中的 char 基本上是两个字节(第 16 单元)。

这与其说是一个编程问题,不如说是对历史容忍度和修复的认识。