Integer.toHexString要求入参为int基本类型
(byte & 0xFF) | 0x100会计算得出一个byte,之后byte转int,正数会高24位补0,负数会高24位补1,接着截取字符串
**byte & 0xFF ** java中byte转int采取的补符号位扩展,这一段的作用是补零扩展。因为补符号位扩展的结果是十进制不变,原二进制改变。补零扩展为十进制改变,但是二进制不变。这里关心的并不是扩展后十进制是否相同,而是关心的二进制是否相同。
(byte & 0xFF)的目的是高24位取0,低8位比如是0111 1111,再或上0x100(二进制为1 1111 1111),结果为1 0111 1111,相当于保证了计算结果的16进制的字符长度大于3
疑问:byte & 0xFF的目的还有个没搞清楚的,就是这里还是byte得操作,怎么就要扩展为int了。找了些资料说系统检测到byte会转int就会先做扩展。感觉这个解释有些牵强。