2012-09-09 61 views
-1

嗨,我有以下字符串如何將字符串轉換爲字節數組中的Java

String msg = "9192939495" 

,我想創建波紋管字節

byte[] texttoprint = {(byte) 0x91, (byte) 0x92,(byte) 0x93,(byte) 0x94,(byte) 0x95} 

我試試這個

public static byte[] hexStringToByteArray(String s) { 
    /*String input = "0102FFAB";*/ 
    byte[] data = new byte[s.length()/2]; 

    for(int i = 0; i < s.length(); i+=2) 
    { 
     data[i/2] = (byte) Integer.decode("0x" + s.substring(i, i + 2) ).byteValue(); 
    } 
    return data; 
} 

但它不起作用

另外,如何在eclipse日誌中打印texttoprint以檢查一切是否正常?如果我發送到打印機{(字節)0x91,(字節)0x92,(字節)0x93,(字節)0x94,(字節)0x95}如果我發送hexStringToByteArray的結果沒有任何反應

+0

它爲什麼不起作用?怎麼了? – SLaks

+0

我把它發送到打印機,但沒有打印... – kosbou

+0

如何在eclipse日誌中打印texttoprint以檢查一切正常 – kosbou

回答

0
static byte[] decode(final String enc) { 
    final long val = Long.parseLong(enc, 16); 
    final byte[] raw = new byte[] { 
    (byte) ((val & 0xff00000000000000L) >> 56), 
    (byte) ((val & 0xff000000000000L) >> 48), 
    (byte) ((val & 0xff0000000000L) >> 40), 
    (byte) ((val & 0xff00000000L) >> 32), 
    (byte) ((val & 0xff000000) >> 24), 
    (byte) ((val & 0xff0000) >> 16), 
    (byte) ((val & 0xff00) >> 8), 
    (byte) (val & 0xff) 
    }; 
    final int n = enc.length() >> 1; 
    final byte[] trimmed = new byte[n]; 
    System.arraycopy(raw, 8 - n, trimmed, 0, n); 
    return trimmed; 
} 

您可以使用Arrays.toString打印值以轉換爲文本格式。要驗證它們是否相同,請嘗試使用Arrays.equals

System.out.println(Arrays.equals(texttoprint, hexStringToByteArray("9192939495")) 
    ? "success" : "failure"); 
+0

對不起,但我是java新手,我不明白如何使用解碼...再次抱歉 – kosbou

+0

@ user1081978嘗試解碼(「9192939495」)' – oldrinb

+0

請參閱[這裏](http:// ideone.com/lqRDH)作爲一個工作示例。 – oldrinb

相關問題