2015-03-03 69 views
0

我有一個字符串值「0x0601930600058000050001」,需要轉換爲字節數組字符串轉換爲字節數組(0X) - Java的

byte[] codes1 = new byte[]{(byte)0x06,(byte)0x01,(byte)0x93,(byte)0x06,(byte)0x00,(byte)0x05,(byte)0x80,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x01}; 

    for(byte b : codes1){ 
     System.out.println(b); 
    } 
System.out.println("======================"); 

byte[] cod = "0x0601930600058000050001".getBytes(); 
for(byte b : cod){ 
     System.out.println(b); 
    } 

兩者的結果是不同的,如何使他們一樣。第一個循環輸出是我期望的實際循環,第二個循環是錯誤的輸出。

如果你看到,我分裂每2個字節和類型鑄造和使用0x獲得實際值。

問:是否有任何預定義的方法(Apache公共編解碼器)可以幫助我執行與第1個循環相同的任務?我在運行時動態獲取該String值。

請建議。

謝謝!

回答

0

我會去:

byte[] result = myString.getBytes(); 

byte[] result = myString.getBytes(Charset.forName("UTF-8")); 
+0

這是沒有得到實際的預期結果:字節[]鱈魚= 「0x0601930600058000050001」 .getBytes(Charset.forName( 「UTF-8」)); for(byte b:cod){System.out.println(b);}; } – Kumar 2015-03-03 12:10:24

0

你的字符串是一個字節數組的十六進制表示!

隨着番石榴,你可以這樣做:

byte[] bytes = BaseEncoding.base16().decode(mystring) 
+0

它不接受字母數字?例如:06038f040003800406 – Kumar 2015-03-03 16:35:12

+1

如果您期望使用小寫字母,那麼您需要告訴編碼器:BaseEncoding.base16()。lowerCase()。decode(「06038f040003800406」); http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/BaseEncoding.html – 2015-03-05 11:54:51

相關問題