ByteBuffer 似乎越界了
ByteBuffer seems out of Bounds
我正在尝试读取一个短数组,转换它的元素并将它们放入一个字节 array.I 使用 ByteBuffer,我收回这个异常 :
线程异常 "main" java.lang.IndexOutOfBoundsException
我试图将 .allocateDirect 最多更改为 16,但结果相同。
ByteBuffer.allocateDirect(2) 和 ByteBuffer.allocate(2)
我都试过了
public class int2byte {
short[] it = new short[4];
byte[] by = new byte[4];
public static void main(String [] args){
int2byte Convert=new int2byte();
Convert.start();
}
public void start(){
it = new short[]{192,168, 1,2};
ByteBuffer bytBuff = ByteBuffer.allocateDirect(2);
for(int i=0;i<3;i++){
bytBuff.putShort(it[i]);
by[i]=bytBuff.get(it[i]);
System.out.print("I get " + by[i]+ "\n\n");
}}}
我知道短裤不适合单个无符号字节,但我稍后会建立一些防御措施以读取最多 255 的短裤。
我认为这段代码可以帮助您理解一些事情。
public class Test {
short[] it = new short[4];
byte[] by = new byte[4];
public static void main(String[] args) {
Test Convert = new Test();
Convert.start();
}
public void start() {
it = new short[] { 192, 168, 1, 2 };
ByteBuffer bytBuff = ByteBuffer.allocateDirect(2000);
for (int i = 0; i < it.length; i++) {
bytBuff.putShort(it[i]);
by[i] = bytBuff.get(i);
System.out.print("I get byte " + by[i] + "\n\n");
System.out.print("I get short " + it[i] + "\n\n");
System.out.print("I get buffer " + bytBuff.get(i) + "\n\n");
}
}
}
我正在尝试读取一个短数组,转换它的元素并将它们放入一个字节 array.I 使用 ByteBuffer,我收回这个异常 :
线程异常 "main" java.lang.IndexOutOfBoundsException 我试图将 .allocateDirect 最多更改为 16,但结果相同。 ByteBuffer.allocateDirect(2) 和 ByteBuffer.allocate(2)
我都试过了public class int2byte {
short[] it = new short[4];
byte[] by = new byte[4];
public static void main(String [] args){
int2byte Convert=new int2byte();
Convert.start();
}
public void start(){
it = new short[]{192,168, 1,2};
ByteBuffer bytBuff = ByteBuffer.allocateDirect(2);
for(int i=0;i<3;i++){
bytBuff.putShort(it[i]);
by[i]=bytBuff.get(it[i]);
System.out.print("I get " + by[i]+ "\n\n");
}}}
我知道短裤不适合单个无符号字节,但我稍后会建立一些防御措施以读取最多 255 的短裤。
我认为这段代码可以帮助您理解一些事情。
public class Test {
short[] it = new short[4];
byte[] by = new byte[4];
public static void main(String[] args) {
Test Convert = new Test();
Convert.start();
}
public void start() {
it = new short[] { 192, 168, 1, 2 };
ByteBuffer bytBuff = ByteBuffer.allocateDirect(2000);
for (int i = 0; i < it.length; i++) {
bytBuff.putShort(it[i]);
by[i] = bytBuff.get(i);
System.out.print("I get byte " + by[i] + "\n\n");
System.out.print("I get short " + it[i] + "\n\n");
System.out.print("I get buffer " + bytBuff.get(i) + "\n\n");
}
}
}