java和C#里byte的取值范围

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是基于字节流的,不会影响数据.

你可能感兴趣的:(java和C#里byte的取值范围)