我已经使用下面链接中提供的解包数据逻辑用于 java 如何使用 Java 解包 COMP-3 数字? 但是对于源中的空数据,它会返回 404040404,就像在 Java 解包代码中一样。我知道这是 ebcdic 中的空间,但是如何通过处理这个空间来解包或避免它。
问问题
280 次
1 回答
1
我们必须处理两个问题。首先,数据是有效的 comp-3 数据,其次,是自提到 Comp-3 以来被 COBOL 等旧语言实现视为“有效”的数据。
如果offests没有错位,则现有程序似乎将空格解释为0而不是空格。这是不正确的,但可能是为了容忍这种不良行为而设计的旧程序的产物。
我在传统商店中采用的方法(假设没有错位)是将“空格”(即 0x404040404040 的序列)视为零。这将是一个遗留检查,将字段与空格进行比较,然后假设 0x00000000000f 作为实际默认值。这是个别商店必须确定的,不被认为是通用的编程方法。
就 Java 而言,必须记住字节是“有符号的”,因此根据代码的编写方式进行比较可能会很棘手。我记得在 java 中唯一的“无符号”数据类型是 char,它基本上是两个字节(单元 16)。
这与其说是一个编程问题,不如说是承认历史容忍度和补救措施。
于 2019-04-04T20:58:38.830 回答