为什么单字节读取不用&0xff 批量读取时却要用呢 不明白 求解
是这样的,
单字节读取时Integer.toHexString(b)
read 是无符号读取的,就是读取的时候,假如读取的是一个字节 例如 11111111 b的值就是 00000000 00000000
00000000 11111111;
批量读取时Integer.toHexString(buf[i]&0xff) 这个函数的参数是int类型的
buf 是一个字节数组。 假如buf[1]=11111111, 这个 会提升为 11111111 11111111 11111111 11111111,
这样两个int的字节码就不同了
buf[1]&0xff (00000000 00000000 00000000 11111111) 这样就一致了
因为每次读取仅仅读取一个字节也就是8位,而单字节就只有8位不需要&0xff,然而批量读取时就需要先读取低八位,再读取高8位
Java中一个字节是八位么???
单字节说明就只有8位,就直接是低八位了呀!就不需要&0xff了啊