任务是从给定整数中获取每个字节。这是我在某处看到的方法:
byte[] bytes = new byte[4];
bytes[0] = (byte) ((id >> 24) & 0xff);
bytes[1] = (byte) ((id >> 16) & 0xff);
bytes[2] = (byte) ((id >> 8) & 0xff);
bytes[3] = (byte) (id & 0xff);
这将导致与此相同的分手:
bytes[0] = (byte) (id >>> 24);
bytes[1] = (byte) (id >>> 16);
bytes[2] = (byte) (id >>> 8);
bytes[3] = (byte) (id);
其中,id
是一个整数值,将ALWAYS
是无符号的。事实上,我认为AND with 0xff
第一种方法没有必要(不是吗?因为我们总是使用最低有效字节)。
这两种方法有什么区别吗?哪一种更受欢迎?