2015-03-13 146 views
0

我有一個從一些字節SHA-512生成的字節數組。 484c1514b468429967aa0c8e2ab6d99c14e7cd4a45605cb834ebfd3612a0cc9184510d8d0a9c92e636d82c065fa2db0e05ef5c2518153a6c4ca9eebbe8d7b475 從一個字節獲取半字節

當我迭代如下;

for(byte x = 0; x < s512in.length; x++){ 
    System.out.println(String.format("%02X ", s512in[x]) + "); 
} 

我可以得到48,4C,15 ....但我想從字節數組中獲得4,8,4,C ...。如何在不轉換爲字符串的情況下獲得該信息?

+0

什麼是's512in'聲明的類型? – 2015-03-13 09:20:45

+0

@KirillK Err,一個字節數組? – EJP 2015-03-13 09:23:57

+0

檢查McDowell的答案是否有幫助。如果沒有,請發佈你的代碼,包括gettig s512 in – 2015-03-13 09:34:34

回答

5
byte[] data = "nibbles".getBytes(StandardCharsets.US_ASCII); 
for(byte b : data) { 
    int high = (b & 0xf0) >> 4; 
    int low = b & 0xf; 
    System.out.format("%x%n", high); 
    System.out.format("%x%n", low); 
} 
+0

謝謝麥克道爾。正是我在找什麼。 – vidulaJ 2015-03-13 09:50:09

-2

用法如下。

try { 

     byte[] data = "nibbles".getBytes("UTF-8"); 
     for (int i = 0; i < data.length; i++) { 
      String temp = Integer.toString((data[i] & 0xff) + 0x100, 16) 
        .substring(1); 
      System.out.println(temp); 
     } 

    } catch (UnsupportedEncodingException ex) { 
     Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

甚至沒有編譯,如果它沒有打印半字節。 – EJP 2015-03-13 09:23:26

+0

這和我以前發佈的問題一樣,但是! – vidulaJ 2015-03-13 09:49:48

+0

@EJP請參閱修改後的代碼。 – Don 2015-03-13 10:17:06