}
//4 end
public abstract void write(int b) throws IOException;
小结:无论定义的通讯格式是什么样的最终肯定要转成byte[](字节数组)
进行发送,所以只要将数据转成字节数组即可,下面进入数据类型
科普时间
三、Java中的数据类型所占的字节数和bit数
数据类型 | 所占字节数 | 所占bit数 | 取值范围 |
---|---|---|---|
byte | 1 | 8 | -128 ~ 127 |
char | 2 | 16 | ‘\u0000’ ~ ‘\uFFFF’ |
short | 2 | 16 | -2^15 ~ 2^15 - 1 |
int | 4 | 32 | -2^31 ~ 2^31 - 1 |
float | 4 | 32 | 2^-149 ~ 2^128 -1 |
long | 8 | 64 | -2^63 ~ 2^63 - 1 |
double | 8 | 64 | 2^-1074 ~ 2^1024 - 1 |
boolean | / | 1 | true or false |
- String在Java中不属于基本数据类型,一个汉字占2个字节,一个英文字母占1个字节
- 小结:1 byte = 8 bit
3.1 什么是bit呢?什么又是高低位呢?在Java中又怎么写代码呢?
- bit就是
位
也就是二进制
数据,取值只有0
,1
- 高位在左,低位在右 - 这里以byte 123为例:
- byte b =123 转为bit
- 高位在0,低位在1
0111 1011
- 在Java中获取byte的8个bit
/**
-
byte转8 bit
-
@param b byte
-
@return 高位到低位顺序, 以byte123 为例: 0111 1011
*/
public static byte[] byte2Bit(byte b) {
byte[] arr = new byte[8];
for (int i = 7; i >= 0; i–) {
arr[i] = (byte) (b & 1);
b = (byte) (b >> 1);
}
return arr;
} -
既然把byte转为了8个bit位,那我们又怎么再把bit转回为byte呢?
/**
- 8个bit位转为byte
*/
public static byte bit2Byte(byte[] bytes) {