大小端
小段存储: 高对高
大端存储:低对高
判断大小端
JVM default big-endian ,c++ default little-endian
int a = 1;
if (((char*)&a)[3] ==1){
//big-endian
return 1;
}
else{
//little-endian
return 0;
}
注:ByteOrder 用于获取设备大小端 ByteBuffer 用于获取当前JVM的大小端
ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN
ByteBuffer buffer = ByteBuffer.allocate(20);
buffer.order();
Android中 直接转换
byte[] copyBuffer = new byte[bufferSize];
short[] audioData = new short[bufferSize / 2];
ByteBuffer.wrap(copyBuffer).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(audioData);