数据传输踩坑——确认数据大小端

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

大小端

小段存储: 高对高
大端存储:低对高
判断大小端
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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值