【问题标题】:PHP: convert an EBCDIC binary file with compression into ASCII formatPHP:将压缩的 EBCDIC 二进制文件转换为 ASCII 格式
【发布时间】:2020-10-17 14:44:08
【问题描述】:

我正在寻找可以将 EBCDIC 二进制文件转换为 ASCII 的 PHP 代码。这个 EBCDIC 文件也有一些打包的数据字段,代码应该也可以解包这些字段,并以可读的格式显示它们。

EBCDIC 文件遵循 CP037 格式。

该文件具有以下定义。正如您在下面看到的,第一个压缩值从第 7 个字符开始,长度为 18 个字符。

  ******************************************************************
  * COBOL DECLARATION FOR TABLE CUST_BILL                          *
  ******************************************************************
  01  DCL-CUST-BILL.
      10 FILLER                          PIC X(05).
      10 TB01196-BL-TYP-CD               PIC X(2).
      10 TB01196-INVOICE-NO              PIC S9(18) COMP.
      10 TB01196-CUST-ID-NO              PIC S9(9) COMP.
      10 TB01196-ACCT-NO                 PIC S9(9) COMP.
      10 TB01196-BL-CYC-NO               PIC X(2).
      10 TB01196-CYC-MTH-YR              PIC X(6).
      10 TB01196-JOB-ITERATION-NO        PIC S9(4) COMP.
      10 TB01196-BL-DISC-APLIED-PCT PIC S9(5)V9(2) COMP-3.
      10 TB01196-BL-PREV-INV-RM-AMT PIC S9(9)V9(2) COMP-3.
      10 TB01196-BL-PMT-MADE-AMT PIC S9(9)V9(2) COMP-3.
      10 TB01196-BL-TOT-CUR-CHG PIC S9(9)V9(2) COMP-3.
      10 TB01196-BL-TOT-REMIT-AMT PIC S9(9)V9(2) COMP-3.
      10 TB01196-BL-PEND-IND             PIC X(1).
      10 TB01196-BL-FED-EX-TX  PIC S9(7)V9(2) COMP-3.
      10 TB01196-BL-ST-LCL-SLS-TX PIC S9(7)V9(2) COMP-3.
      10 TB01196-BL-OTH-TX     PIC S9(7)V9(2) COMP-3.
      10 TB01196-BAL-FORWARD-AMT PIC S9(9)V9(2) COMP-3.
      10 TB01196-BL-PRINTED-IND          PIC X(1).
      10 TB01196-DB-USERID               PIC X(8).
      10 TB01196-DB-TMSTAMP              PIC X(26).
      10 CUST-ACCT-INT-SRVC-CHG          PIC S9(7)V99 COMP-3.
  ******************************************************************
  * THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 20      *
  ******************************************************************

这是 EBCIDIC 的表示:

这是我试图实现的转换后的 ASCII 格式:

【问题讨论】:

    标签: php type-conversion file-conversion unpack ebcdic


    【解决方案1】:

    一般来说,您可以使用 unpack 函数在 PHP 中解码/解包,但我的经验是,要正确处理它非常耗时; https://www.php.net/manual/en/function.unpack.php

    这个问题有一些答案(特别是共享 EBCDIC 到 ASCII 的代码),您可能会找到一个有用的起点: php - convert ebcdic to ascii

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多