gpt4 book ai didi

python - 在 Python 中解码 ASCII 文件中的 COMP-3 打包字段?

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:05 25 4
gpt4 key购买 nike

我有一个以前是 EBCDIC 编码文件的文件,已使用 dd 将其转换为 ASCII 。但是,有些行包含我想读取的 COMP-3 打包字段。

例如,我想要解码的其中一行的字符串表示形式是:

'15\x00\x00\x00\x04@\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x0c777093020141204NNNNNNNNYNNNN\n'

我想要读取的字段由PIC S9(09) COMP-3 POS 指定。 3,即从第三个字节开始的字段,解码时长度为 9 个字节(因此,根据 COMP-3 spec 编码时长度为 5 个字节)。

我了解 COMP-3 规范,并且我也知道对于该特定行,该字段的整数值应该为 315,但我不知道该怎么做才能真正做到这一点解码该字段。我也不确定使用 dd 将文件转换为 ASCII 的事实是否存在问题。

以前有人处理过类似的问题吗,或者我是否遗漏了一些明显的东西?谢谢!

最佳答案

是的,文件包含非字符数据并且已在文件或记录级别从 EBCDIC 转换为 ASCII,这是一个问题。使用什么工具来做到这一点不是问题。

到目前为止,对您来说最简单的事情就是请求仅以字符形式向您提供数据。如果数据包含带符号字段,则符号应该是单独的,如果有隐含的小数位,则这些小数位应该是实际的,或者由缩放值指示(以对您来说更方便的为准)。

那么你不需要转换任何东西。我永远无法理解人们如何认为他们可以给你包含“任何”的 EBCDIC 数据并期望你解决它。

如果您单击 EBCDIC 标签,您会发现一些其他解决方案,如果由于某些愚蠢的原因,无法从 EBCDIC 源提供字符数据,您可以应用这些解决方案。既然他们已经给了你废话,他们可能会想出一些愚蠢的理由。如果是这样,请(礼貌地)向您的老板记录下来。

如果您获得字符数据,那么您可以 dd 或其他任何方式来转换它(如果您仍然得到看起来有趣的东西,请检查代码页)。

如果转换非字符数据,事情会被腌制的原因如下:

05  a-packed-decimal-positive-five COMP-3 PIC S9 VALUE +5.
05 a-character-asterisk PIC X VALUE "*".

在 EBCDIC 中,这两个值都具有十六进制值 5C。两者都将转换为 ASCII 星号。然后 COMP-3 值 5 就丢失了。请注意,COMP-3 可以在低位符号之外为其每个字节采用任意数字对。当你碰巧击中控制角色时泡菜。对于“二进制”字段也是如此,更糟糕的是,因为意外命中的可能性更大。

关于python - 在 Python 中解码 ASCII 文件中的 COMP-3 打包字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com