2013-04-21 54 views
0

我是在一個項目(與Java 2 EE Web應用程序)工作的字符串表示一個字節,我需要一個COM端口上發送OutputStream,在OutputStream數據類型是byte[],一個這個數據的字節是我試圖與之通信的目標硬件的地址。 問題是硬件的地址必須由用戶在網頁中提供。所以我怎樣才能將一個字節的字符串表示轉換爲真實的byte? 我希望下面的代碼可以使問題更加生動如何創建一個字節

String data1 = "0xA1"; 
String data2 = "0xAB"; 

,我需要把下面的行的OutputStream。

byte[] b = new byte[]{0xA1,0xAB}; 

有人說用org.apache.commons.codec.binary.Base64可以解決問題,但我沒有任何線索。 預先感謝您。

+0

像這樣一個http://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using-java? – giorashc 2013-04-21 06:44:24

+0

thnx,但沒有工作 – MoienGK 2013-04-21 06:51:01

回答

3

這很容易:

byte b = Integer.decode("0xA1").byteValue(); 

鏈接到javadoc

+0

謝謝 - 它像一個魅力:) – MoienGK 2013-04-21 06:55:28

1

,你可以以一個字符串轉換爲它的字節值表示會使用以下方法,但你需要給它發送字符串只把部分不帶「0X」

public static byte convertStringToByte(String str){ 
    return (byte)Integer.parseInt(str, 16); 
} 
0

如果你想對自己做這件事,而不是通過函數調用做有趣
做到像下面

獲取ASCII值
把它由2收集提醒(這將是1或0)
最後扭轉整個序列

例如,對於小數32,你應該得到0100000

如果要初始化COM端口,你也可以一些sequenc es(ASCII序列)
直接代替二進制,請檢查手冊。