Есть две проблемы, с которыми нам приходится иметь дело. Во-первых, это действительные данные comp-3, а во-вторых, это данные, считающиеся «действительными» в более старых реализациях языка, таких как COBOL, так как был упомянут Comp-3.
Если отклонения не выровнены, может показаться, что пробелы интерпретируются существующими программами как 0 вместо пробелов. Это было бы неправильно, но могло бы быть артефактом старых программ, которые были спроектированы, чтобы терпеть это плохое поведение.
Подход, который я бы использовал в унаследованном магазине (при условии отсутствия смещения), состоит в том, чтобы рассматривать «пробелы» (которые представляют собой последовательности 0x404040404040) как ноль. Это будет устаревшая проверка, чтобы сравнить поле с пробелами, а затем предположить, что 0x00000000000f является фактическим значением по умолчанию. Это то, что должен определить отдельный магазин, и он не считается общим подходом к программированию.
С точки зрения Java, нужно помнить, что байты «подписаны», поэтому сравнение может быть сложным в зависимости от того, как написан код. Единственный «беззнаковый» тип данных I
Напомним, что в Java это символ, который на самом деле два байта (блок 16) в основном.
Это не столько проблема программирования, сколько признание исторической терпимости и исправления.