public static byte[] numberToBe(byte[] target, Number number, int offset, int len) {
long src = number.longValue();
for(int i = 0; i < len; ++i) {
target[offset + len - i - 1] = (byte)((int)(src >> i * 8 & 255L));
}
return target;
}
传入一个byte数组,再传入一个number
函数把number转成len个字节,放到数组的offset位置
java中运算执行顺序是先计算乘除,再计算位运算,然后计算逻辑运算。(src >> i * 8 & 255L)
中先右移8*i位,因为byte类型为8位,相当于舍掉低i比特。
再按位与255L也就是1111 1111,等价于取出此时最低的8位。
这两个操作得到的值就是src的低i+1比特。
循环将其倒序赋值到byte数组,因为取数据也是从低位到高位取的,所以最后得到的是正序。
偏移量和长度用于确认赋值到数组的位置。
最后达到的效果就是将number按照字节分割存放到字节数组中。