2012-04-06 52 views
0

我試圖開發轉換的6個字節爲十六進制表示中的程序(如00:65:36:21:A5:BC)反轉字符串兩個char由兩個char

用這種方法:

public static String toHexString(byte[] bytes) { 
     StringBuilder sb = new StringBuilder(18); 
     for (byte b : bytes) { 
      if (sb.length() > 0) 
       sb.append(':'); 
      sb.append(String.format("%02x", b)); 
     } 

     return sb.toString(); 

    } 

我正在獲得一個很好的格式,但現在我必須將數字反轉兩位。

我獲得00:65:36:21:A5:BC

什麼,我應該得到BC:A5:21:36:65:00

任何人可以幫助我在這最後一步? ?我掙扎採取每對數字,並改變其位置(把BC在開始,但沒有預先

改變其順序(如CB)

由於G.

+0

顛倒'bytes'不是更容易嗎?或者甚至在相反的方向迭代「字節」? – 2012-04-06 14:47:30

回答

0

您可以使用反向定期for代替for each

public static String toHexString(byte[] bytes) { 
    StringBuilder sb = new StringBuilder(18); 
    for (int i = bytes.length - 1; i >= 0; i--) { 
     if (sb.length() > 0) 
      sb.append(':'); 
     sb.append(String.format("%02x", bytes[i])); 
    } 

    return sb.toString(); 

} 
+0

oooh !!沒有想到.... gosh我應該有^^謝謝,無論如何,工作正常! (順便謝謝大家!!) – Guigui 2012-04-06 15:20:56

4

爲了在追加從頭開始,而不是追加到最後,使用此:

sb.insert(0, text); 

,而不是這樣的:

sb.append(text); 
0

使用StringBuilder類的插入方法,而不是追加的方法,用0

偏移量可以閱讀更多here

相關問題