将转义字符解析为一个字节

时间:2012-09-12 12:04:28

标签: java sockets 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");

非常感谢

4 个答案:

答案 0 :(得分:7)

试试这个:

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

双引号用于字符串文字,单引号用于字符,字节#valueOf用于表示你的想法。

如果你想把一个字符串变成字节,你可以这样做:

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

答案 1 :(得分:2)

你的问题有很多答案,但接下来的问题是为什么我的循环不起作用?例如如果你只读了10个字节就会停止它,如果你一次发送两个消息,它们将在一次读取时被读取。

你真正想要的是像

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

答案 2 :(得分:1)

请试试这个

private static final byte DELIMITER = '\n';

'\ n'的类型为char,对应 unsigned short 。但请记住,Java中的short始终是签名的。

答案 3 :(得分:1)

这个怎么样:

private static final byte DELIMITER = '\n';

将换行符括在单引号中会产生一个char值,在这种情况下可以将其赋值给一个字节,而不会丢失任何信息。