日期:2014-05-17 浏览次数:21106 次
java里一个byte取值范围是-128~127, 而C#里一个byte是0~255.
首位不同. 但是底层I/O存储的数据是一样的,
比如, 十进制的100, 转换成java或者c#的byte, 都是1100110.
但是, 使用java的getBytes()方法, 得到的是负数,即: -100110
使用C#的getBytes(),得到的是正数.1100110.
?
这在底层socket传输应该注意.
?
另外, java底层socket传输应注意, 不要使用Reader/Writer而是使用Stream.
因为Reader/Writer是基于字符流的,会在发送数据之前将数据按照字符的格式(比如UTF8编码)预处理,导致乱码问题.而Stream是基于字节流的,不会影响数据.
?