当前位置: 首页 > 知识库问答 >
问题:

EBCDIC解包comp-3数据在Java中返回40404**

相化
2023-03-14

我已经使用了解包数据逻辑提供在下面的链接为java如何解包COMP-3数字使用java?但是对于源中的空数据,它返回404040404,就像Java解包代码一样。我明白这是ebcdic中的空间,但如何通过处理这个空间来解包或避免它。

共有1个答案

仲孙昊焱
2023-03-14

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

如果offest没有对齐,那么空格似乎被现有程序解释为0,而不是空格。这是不正确的,但可能是为容忍这种不良行为而设计的旧程序的产物。

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

 类似资料:
  • 转换后,我得到的解压缩数据为

  • 我有一个巨大的大型机文件,在那个文件中有一些打包的数字。我想知道如何使用Java解包以下数字? 有人能告诉我的程序是否正确吗?

  • 此文件来自我们的一个客户,我有以下字段的复印本布局: 我将只关注这3个字段,因为所有其他字段都是PIC(X)并且已经是Unicode值。我在Max Vagner创建的工具Ebcdic2Ascii的帮助下加载了所有内容。我只是对“解包”功能做了一点修改,并将其修改为 为了让我获得以下示例数据: 正如您所看到的,我只能正确地得到以下3个值: 参考来源:http://www.3480-3590-data

  • 我将从下面的文件中添加一些行,以及COMP-3的算法: Notepad++中的文件如下所示(第一行): AH 4820øéé*200 DBAG DBAG 0 AED S EUR AED S KAS°·2  !锡 将ASCII转换为十六进制的记事本++中的文件如下所示,尽管这不应该是正确的: 200F41483438323002C3B8C3AA01C3A6

  • 问题内容: 我问了一个有关转换COMP字段的问题,但没有得到任何答案。 我希望堆栈溢出可以帮助我解决这个问题。 我成功地将COMP-3转换为十进制。我需要您的帮助,以任何高级编程语言(最好使用Java或c#.net)将解压缩的十进制数转换回COMP-3。 问题答案: 用压缩十进制-123表示为X‘123d’(最后一个ny c,d或f是符号)。处理压缩十进制的最简单方法之一是简单地将字节转换为十六进