我有一个非人类可读格式的 cobol 文件:它有 comp-3 格式的数据(数字),还有其他字符串和字符。我有转换 comp-3 格式的算法,但是当我将它应用于文件中的字节数组时,所有字符都被转换并且输出不是正确的。考虑到 comp-3 数据和普通数据,我怎样才能正确解码整个文件?
我将从下面的文件中添加一些行以及我的 comp-3 算法:
Notepad++ 中的文件如下所示(第一行):
AH4820øêæÉ* 200 DBAG DBAG 0
AED S EUR AED S KAS°ê¤ 2 ø TN Øê¤ ð §É! SN ê¤
Notepad++ 中的 ASCII 到 HEX 转换的文件看起来像这样,即使这不应该是正确的:
200F41483438323002C3B8C3AA01C3A6 01C3892A202020202020202020202020 20203230302044424147204442414720 3020202020202020202020202020
public static String unpackData(byte[] packedData) {
String unpackedData = "";
final int negativeSign = 13;
for (int currentCharIndex = 0; currentCharIndex < packedData.length; currentCharIndex++) {
byte firstDigit = (byte) ((packedData[currentCharIndex] >>> 4) & 0x0F);
byte secondDigit = (byte) (packedData[currentCharIndex] & 0x0F);
unpackedData += String.valueOf(firstDigit);
if (currentCharIndex == (packedData.length - 1)) {
if (secondDigit == negativeSign) {
unpackedData = "-" + unpackedData;
}
} else {
unpackedData += String.valueOf(secondDigit);
}
}
return unpackedData;
}