簡體   English   中英

將轉義字符解析為一個字節

[英]parse escape character as a byte

我將請求從客戶端套接字發送到服務器套接字,我想使用轉義字符(“\\ n”)區分請求(作為字節數組發送)。 我希望每個新行例子有一個請求:

"Request1 "
"Request2"
"Request3"

為了做到這一點,我需要轉換字節中的“\\ n”以便比較這樣的請求

    byte[] request= new byte[1024];
    int nextByte;
        while((nextByte=in.read(request))!=DELIMITER)
        {

        String chaine = new String( request,0,nextByte);
        System.out.println("Request send from server: " + chaine);
       }

問題是,當我嘗試在字節中轉換“\\ n”時,我得到一個數字格式異常

private static final byte DELIMITER = Byte.valueOf("\n");

非常感謝你

嘗試這個:

private static final byte DELIMITER = (byte) '\n';

雙引號用於字符串文字,單引號用於字符,而字節#valueOf除了您的想法之外還有其他功能。

如果您想將String轉換為字節,您可以:

byte[] theBytes = "\n".getBytes("UTF-8");

你的問題有很多答案,但接下來的問題是為什么我的循環不起作用? 例如,如果您讀取的確切長度為10個字節,它將停止,如果您一次發送兩個消息,它們將在一次讀取中讀取。

你真正想要的是什么

BufferedReader br = new BufferedReader(new InputStreamReader(in));
for(String line; (line = br.readline()) != null; ) {
    System.out.println("Line read: " + line);
}

請試試這個

private static final byte DELIMITER = '\n';

'\\ n'是char類型,對應unsigned short 但是,請記住, short Java中始終簽名。

這個怎么樣:

private static final byte DELIMITER = '\n';

將換行符括在單引號中會產生一個char值,在這種情況下可以將其賦值給一個字節而不會丟失任何信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM