2013-04-08 84 views
-1

我需要將終止符放置到我的字符串中。終結者可能是字節11(或0x0B)或將來可能是任何其他人。向我的字符串添加字節的最佳方法是什麼?創建字符串二進制終止符

我想這樣做:

String s = "122456"+char(11); 
+7

爲什麼你需要放置一個終止符到字符串?這感覺就像[xy-problem](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – ddmps 2013-04-08 11:28:50

+0

Java'String'中的終止符需要什麼? – kaysush 2013-04-08 11:30:14

+0

我需要將此字符串發送到com端口。協議需要特定的終止符(和字段分隔符)。 – vico 2013-04-08 11:33:42

回答

0

在Java中,你應該使用一個常數這一點。嘗試

public final static char TERMINATOR = 0x0B; 

然後,您可以在代碼中使用這樣的:

"122456" + TERMINATOR 

這使得代碼可讀性,這也使得它簡單的用不同的符號來代替終止(而不是在你的情況但通常)或找到符號被使用的所有地方。

如果您需要的終止是可變的,使用領域和存取方法:

private char terminator = 0x0b; 
public void setTerminator(char terminator) { this.terminator = terminator; } 
public char getTerminator() { return terminator; } 

這允許您更改終止。

我也建議爲每個計劃發送的消息創建一個Java類型。該類型應知道如何創建字節數組,然後可以使用「IO服務」傳輸字節數組。因此,創建存取方法的消息的每個部分,然後單encode()方法:

public byte[] encode() { 
    String message = data1 + terminator + data2 + terminator + ... 

    return message.getBytes("ISO-88591-1"); 
} 

這樣的話,你可以建立一個腳印的消息步驟,然後將其轉換成字節流一旦其完成發送。

+0

但我需要終止符,如變量 – vico 2013-04-08 12:11:51

+0

然後使其成爲該類的屬性(= field)並添加一個getter + setter。你可以使用''122456'+(char)0x0b'或者「122456 \ u000b」,但是這將使得很難在將來用不同的字符替換它。 – 2013-04-08 12:17:45

+0

@ user1501700不,你不知道。您正在使用固定協議,並且該協議具有固定終止符。否則,它不是一個協議。 – EJP 2013-04-09 01:30:57