我是个Java新手,开始用BitSet和ByteBuffer实现一个UDP发送器,因为某些原因,我得到了我意想不到的行为.
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.BitSet;
public class Main
{
public static void main(String[] args) {
ByteBuffer out = ByteBuffer.allocate(2);
BitSet byt = new BitSet(8);
byt.set(0, true);
byt.set(1, false);
out.put(byt.toByteArray());
byt.set(0, true);
byt.set(1, false);
byt.set(2, true);
out.put(byt.toByteArray());
System.out.println("First byte is " + out.array()[0]+ " second is " + out.array()[1]);
}
}
我从哪里得到的输出
First byte is 1 second is 5
我认为这是不对的,因为字符顺序是错误的
当我try 运行此命令时:
public class Main
{
public static void main(String[] args) {
ByteBuffer out = ByteBuffer.allocate(2);
BitSet byt = new BitSet(8);
byt.set(0, false);
byt.set(1, false);
out.put(byt.toByteArray());
byt.set(0, true);
byt.set(1, false);
byt.set(2, true);
out.put(byt.toByteArray());
System.out.println("First byte is " + out.array()[0]+ " second is " + out.array()[1]);
}
}
输出将更改为
First byte is 5 second is 0
我认为这是正确的答案.
请注意,更改只发生在第7行,而字节的顺序也发生了更改.
我对Java还是个新手.因此,这可能是一场巨大的误会.不管怎样,谢谢你!