2017-08-16 27 views
-2

以前是否有人嘗試過對帶標題的轉換?其實,我想做一些事情:將已分區的十進制數從Ebcdic文件轉換爲Java字符串

public static Object parseZonedDec(byte[] byte_array) throws Exception { 
    String val = getHexString(byte_array); 
    int len = val.length(); 
    return val.substring(1, len-1); // not sure if this is correct? 
} 

public static String getHexString(byte[] b) { 
    if (b == null) { 
    return null; 
    } 

    StringBuffer sb = new StringBuffer(); 

    for (int i=0; i < b.length; i++) 
    { 
    sb.append(Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1)); 
    } 
    return sb.toString().toUpperCase; 
} 

謝謝!

+0

當您運行此會發生什麼?有錯誤嗎?它是否編譯?輸出是否不正確?請訪問[幫助]並閱讀[問]以獲得有效使用本網站的詳細信息。另外,你是否查找了分區小數的規格? –

+0

請澄清更多,你想要做什麼。 – Aman

回答

0

你可以試試下面的代碼

public long parseZonedDec(byte[] data) { 
    long val = 0L; 
    boolean negative = false; 
    for (int i = 0; i < data.length; i++) { 
     int raw = data[i] & UNSIGNED_BYTE; 
     int digitA = raw >> 4; 
     int digitB = raw & BITS_RIGHT; 

     if (digitA < 10) { 
      val *= 10L; 
      val += (long) digitA; 

     } else if (digitA == 11 || digitA == 13) { 
      negative = true; 
     } 

     if (digitB < 10) { 
      val *= 10L; 
      val += (long) digitB; 

     } else if (digitB == 11 || digitB == 13) { 
      negative = true; 
     } 
    } 
    if (negative) 
     val = -val; 
    return val; 
} 
+0

如果劃分的十進制字段的長度= 4,是否意味着String.length()也等於4,這與壓縮小數不同?順便說一句,你能解釋一下上面的邏輯嗎?非常感謝! – user1882051

相關問題