EBCDIC, распаковывающий данные comp-3, возвращает 40404 ** в Java - PullRequest
0 голосов
/ 01 апреля 2019

Я использовал логику распаковки данных, представленную в ссылке ниже для Java Как распаковать цифры COMP-3 с помощью Java? Но для нулевых данных в источнике он возвращает 404040404, как в коде распаковки Java. Я понимаю, что это было место в ebcdic, но как распаковать, обработав это место или избежать этого.

1 Ответ

0 голосов
/ 04 апреля 2019

Есть две проблемы, с которыми нам приходится иметь дело. Во-первых, это действительные данные comp-3, а во-вторых, это данные, считающиеся «действительными» в более старых реализациях языка, таких как COBOL, так как был упомянут Comp-3.

Если отклонения не выровнены, может показаться, что пробелы интерпретируются существующими программами как 0 вместо пробелов. Это было бы неправильно, но могло бы быть артефактом старых программ, которые были спроектированы, чтобы терпеть это плохое поведение.

Подход, который я бы использовал в унаследованном магазине (при условии отсутствия смещения), состоит в том, чтобы рассматривать «пробелы» (которые представляют собой последовательности 0x404040404040) как ноль. Это будет устаревшая проверка, чтобы сравнить поле с пробелами, а затем предположить, что 0x00000000000f является фактическим значением по умолчанию. Это то, что должен определить отдельный магазин, и он не считается общим подходом к программированию.

С точки зрения Java, нужно помнить, что байты «подписаны», поэтому сравнение может быть сложным в зависимости от того, как написан код. Единственный «беззнаковый» тип данных I Напомним, что в Java это символ, который на самом деле два байта (блок 16) в основном.

Это не столько проблема программирования, сколько признание исторической терпимости и исправления.

...