《Java TCP/IP Socket编程》读书笔记(5)
3.1 信息编码
3.1.1 基本整型
TCP和UDP套接字使我们能够发送和接收字节序列(数组),及范围在0~255之间的整数。
下面考虑发送一个byte型整数、一个short型整数、一个int型整数和一个long型整数,这四个类型在Java中依次用1、2、4、8个字节进行标示。

1. 发送顺序,可以由低位到高位发送(little-endian),也可以由高位到低位发送(big-endian)。
考虑厂整型123456787654321L,其16禁止标示形式为0x0000704885F926B
1.如果使用little-endian顺序传输这个整数,其字节的十进制数值序列为:

如果使用big-endian顺序传输这个整数,则其字节的十进制数值序列为:

对于任何一个多字节的整数,发送和接收方对于使用哪种传输顺序必须达成一致。
2. 发送者和接收者对于发送的数值是有符号的还是无符号的也要达成共识。Java中的四种基本整数类型都是有符号的。
下面的代码中演示了发送和接收整数。
如上图所示,运行过程中产生了一个字节序列
还有一一种方式可以使用Java提供的二进制的读写操作。
3.1.2 字符串和文本
调用String的getByte方法可以返回一个根据平台默认字符集对String实例进行编码的字符数组。要保证一个字符串按照特定的字符集编码,只需要将字符集的名字传递给getBytes方法,其返回的自己数组就包含了指定字符集的字符串。
发送者和接收者必须在表示字符串的方式上达成共识。
3.1.3 位操作:布尔值编码位图(bitmap)是对布尔信息进行编码的一种非常紧凑的方式,位图的主要思想是根据位图中的每一位都能够表示一个布尔值编码,通常是0表示false,1表示true。要操纵位图,可以考虑使用掩码,其中一位或者多位设为1,其他各位被清空。
下面是针对位图进行的操作
