result[3] = (byte) (a >> 24 & 0xff);
result[2] = (byte) (a >> 16 & 0xff);
result[1] = (byte) (a >> 8 & 0xff);
result[0] = (byte) (a & 0xff);
result[2] = (byte) (a >> 16 & 0xff);
result[1] = (byte) (a >> 8 & 0xff);
result[0] = (byte) (a & 0xff);
byte本身只有8位
所以不用& 0xff 取后8位 应该也能达到所要的效果
但是,还不是我想要的答案,可以我没有描述情况.
下面四句话,是表示高位优先.
result[3] = (byte) (a >> 24 & 0xff);
result[2] = (byte) (a >> 16 & 0xff);
result[1] = (byte) (a >> 8 & 0xff);
result[0] = (byte) (a & 0xff);
目前,我有点比较模糊,为什么都是24 16 8 0 呢.
他们之间都是减8,一个字节.
但是,还不是我想要的答案,可能我没有描述清楚.
下面四句话,是表示高位优先.
result[3] = (byte) (a >> 24 & 0xff);
result[2] = (byte) (a >> 16 & 0xff);
result[1] = (byte) (a >> 8 & 0xff);
result[0] = (byte) (a & 0xff);
目前,我有点比较模糊,为什么都是24 16 8 0 呢.
他们之间都是减8,一个字节.
因为byte类型就只有1个字节,result是个byte数组,里面的元素都是byte,只有1个字节,8位
而把int放到byte数组,就是需要长度为4的数组。
int a = 123456;
int[] b = new int[4];
b[0] = (byte) ((a >> 24) & 0xff);
b[1] = (byte) ((a >> 16) & 0xff);
b[2] = (byte) ((a >> 8) & 0xff);
b[3] = (byte) (a & 0xff);
System.out.println(b[0] + " " + b[1] + " " + b[2] + " " + b[3] + " " +
(((b[0] & 0xff) << 24)| ((b[1] & 0xff) << 16)| ((b[2] & 0xff) << 8)| (b[3] & 0xff)));