大小端
小段存储: 高对高
大端存储:低对高
判断大小端
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);
本文深入讲解了大小端存储原理,对比了小端和大端存储方式,并提供了判断大小端的代码示例。同时,介绍了JVM和C++的默认大小端设置,以及如何使用ByteOrder和ByteBuffer在不同平台间进行数据转换。

700

被折叠的 条评论
为什么被折叠?



