2017-03-02 156 views
1

我正在使用MQTT客戶端/代理從一臺設備向另一臺設備發送消息。該消息在String之間成功交換(發送和接收)在兩個設備之間。Java:如何將ASCII字符串轉換爲字符串?

然而,在MQTT-代理(即:服務器)的消息的字符接收爲一個串內的ASCII數字。

例如,如果我派:

「這是一個測試」

在代理它顯示:

「84,104,105,115,32,105,115,32,97,32,116,101,115,116 ,10"

使用Java,我需要一種方法來轉換ŧ他的ASCII字符串返回到服務器上的字符串以便進一步處理。

如何做到這一點?感謝

+0

您需要檢查您的編碼設置。如果服務器和客戶端在交換過程中都具有相同的編碼,則應該能夠以相同的字符串形式接收相同的信息。 –

+0

有些人真的很喜歡投其他人 –

+2

是的,他們這樣做。有一個投票從我:) SO是一個偉大的網站,但不幸的是,它吸引了很多自命不凡的******。他們通常是古老的,醜陋的或簡單的自大。或全部3人(你知道你是誰;))。你只需忍受它,並希望在巨魔毀掉你的帖子之前得到答案。 – TedTrippin

回答

1

將字符串轉換爲一個byte []並使用字節[]

創建一個新的字符串
String str = "84,104,105,115,32,105,115,32,97,32,116,101,115,116,10"; 
String[] chars = str.split(","); 
byte[] bytes = new byte[chars.length]; 
for (int i = 0; i < chars.length; i++) { 
    bytes[i] = Byte.parseByte(chars[i]); 
} 
return new String(bytes); 
+0

感謝它的工作 –

+1

不應該'新字符串'指定一個字符集? – VGR

+0

同意@VGR,沒有人正在播放默認的charset輪盤賭。 –

0

您可以使用stream以及這一點,如果你可以使用java-8

String str = Stream.of("84,104,105,115,32,105,115,32,97,32,116,101,115,116,10".split(",")) 
     .map(ch -> (char) Integer.valueOf(ch).intValue()) 
     .collect(StringBuilder::new, 
       StringBuilder::appendCodePoint, StringBuilder::append) 
     .toString(); 
System.out.println(str); // This is a test