意为在二进制的条件下,1Byte=8bit,1BYTE有符号取值范围是负1111111到正1111111,在有符号规则下,第一位0和1代表数字的正负。
1Byte=8bit,二进制下,无符号整数取值范围是00000000-11111111,有符号取值范围是负1111111到正1111111,因为在有符号规则下,第一位0和1代表数字的正负,换成十进制就是无符号取值范围是0~255,有符号取值为-127~127。
例如 java byte 可以写入
ByteBuf buf = Unpooled.buffer(1); buf.writeByte(-34); log(buf); read index:0 write index:1 capacity:1 +-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| de |. | +--------+-------------------------------------------------+----------------+
ByteBuf buf = Unpooled.buffer(1)
buf.writeByte(222);
log(buf);
read index:0 write index:1 capacity:1
+-------------------------------------------------+
| 0 1 2 3 4 5 6 7 8 9 a b c d e f |
+--------+-------------------------------------------------+----------------+
|00000000| de |. |
+--------+-------------------------------------------------+----------------+
是一样的
读取的时候默认读取的是有符号的
System.out.println(buf.readByte());
-34
那怎么去获取222呢
System.out.println(buf.readUnsignedByte());