new String(tmp,1,nlen,"UTF8")

tmp是一个byte(字节)数组,如:['a','b','c'...],tmp[0]是去byte中的第一个,运算符&表示按位运算‘且’,
就是前后值的二进制相同位有0取0,否则取1,如:2&3就是运算二进制的10&11,结果是二进制10,表示十进制就是2,
所以tmp[0]&0xff返回的是tmp[0]这个字节的ASCII码,如A对应65,a对应97,new String(tmp,1,nlen,"UTF8")
就是将字节数组tmp从索引的第1位取nlen长度后组成字符串,切组成后的字符串按照utf8的字符集编码
原文地址:https://www.cnblogs.com/pureEve/p/6549231.html