-6

COBOL COMP を展開するには、Java コードまたはロジックが必要です。EBCDIC ファイルのフィールド。助けてください

コンプを解凍するために以下のコードを試しました。しかし、私が得るいくつかの値は負です。元。8188 -57348 として取得しています

public static String getBinary(byte[] b,int decimalPointLocation) {
    long val = 0;
    int first_byte = b[0] & 0x0F;
    for (int i = 0; i < b.length; i++) {
        int low = b[i] & 0x0F;
        int high = (b[i] >> 4) & 0x0f;
        if (low < 0)
            low *= -1;
        if (high < 0)
            high *= -1;
        if(first_byte==15){
            high = 15 -high;
            low = 15 - low;
        }
        int num = high * 16 + low;
        val = 256 * val + num;
    }
    if(first_byte == 15){
        val++;
    }
    String s = ""+val;
    while(s.length()<b.length*2){
        s="0"+s;
    }
    if(first_byte == 15){
        s="-"+s;
    }
    if (decimalPointLocation > 0) {
        s = s.substring(0,
                (s.length() - decimalPointLocation))
                + "."
                + s.substring(s.length()
                        - decimalPointLocation);
    }
    return s;
}
4

1 に答える 1