蜗牛的壳 - Java中byte使用注意事项 的评论 https://snailium.net/other-tech/notes-on-java-byte-type.html 目前在做的SYSC 3303 Project是关于使用Java编写TFTP服务器/客户端。其中Java的发送数据包要用byte数组。凭着C语言的扎实基础,想当然的认为byte就是8位无符号整数。... snailium https://snailium.net/other-tech/notes-on-java-byte-type.html#comment-90 2010-03-31T02:03:37-04:00 [quote=sephiroth]你好,蜗牛大侠,你是07年就遇到了啊,我最近也遇到了,试了下: byte[] start = new byte[]{-1, -1, -1, -1}; for(byte b:start){ System.out.print(b + ","); } System.out.println(); String s = new String(start); byte[] end = s.getBytes(); for(byte b:end){ System.out.print(b + ","); } System.out.println(); 然后结果是: -1,-1,-1,-1, 63,63,63,63, 所以负数字节在做字节数组字符串转换时,java没处理好啊,或者是我理解错误? 这个你还记得当初是怎么解决的吗,我也是要在socket通信里开发一个接口遇到这些问题了,好头疼...多谢.[/quote] 问题出在把“-1”转换成字符串的步骤上 Java不知道“-1”对应的是哪个字符,所以用“?”代替 而“?”的ASCII编码就是63 sephiroth https://snailium.net/other-tech/notes-on-java-byte-type.html#comment-89 2010-03-29T05:34:09-04:00 你好,蜗牛大侠,你是07年就遇到了啊,我最近也遇到了,试了下: byte[] start = new byte[]{-1, -1, -1, -1}; for(byte b:start){ System.out.print(b + ","); } System.out.println(); String s = new String(start); byte[] end = s.getBytes(); for(byte b:end){ System.out.print(b + ","); } System.out.println(); 然后结果是: -1,-1,-1,-1, 63,63,63,63, 所以负数字节在做字节数组字符串转换时,java没处理好啊,或者是我理解错误? 这个你还记得当初是怎么解决的吗,我也是要在socket通信里开发一个接口遇到这些问题了,好头疼...多谢.