byte是带符号的类型,所以byte[]转string再转byte[]会出现问题,直接改成char[]就好了,
因为String里的new String(char [])构造函数直接调用的System.Arraycopy
而new String(byte[])调用了解码的相关东西,与解码有关,所以不要用byte[]
byte b = (byte) 0xf1;
byte c = -15;
b和c的值是一样的,因为b是直接的内存拷贝,而-15,的机器码是补吗,所以是一样的。0xf1除去符号位取反加以就是-15的原码表示。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. Java 字符串转int或者byte
如果第一位有1,用Integer.parse不好用,需要
Integer.valueOf(src.substring(i, i + 2),16).byteValue();
就能获得其byte值
Java byte转int自动转换会有填充值,所以java, byte转int要用 byte & 0xff,因为0xff仅仅是指1111 1111。