栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将字节从一个ByteBuffer传输到另一个

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将字节从一个ByteBuffer传输到另一个

好吧,我已经适应了@Richard的答案:

public static int transferAsMuchAsPossible(          ByteBuffer bbuf_dest, ByteBuffer bbuf_src){  int nTransfer = Math.min(bbuf_dest.remaining(), bbuf_src.remaining());  if (nTransfer > 0)  {    bbuf_dest.put(bbuf_src.array(),        bbuf_src.arrayOffset()+bbuf_src.position(),        nTransfer);    bbuf_src.position(bbuf_src.position()+nTransfer);  }  return nTransfer;}

并进行测试以确保其有效:

public static boolean transferTest(){    ByteBuffer bb1 = ByteBuffer.allocate(256);    ByteBuffer bb2 = ByteBuffer.allocate(50);    for (int i = 0; i < 100; ++i)    {        bb1.put((byte)i);    }    bb1.flip();    bb1.position(5);    ByteBuffer bb1a = bb1.slice();    bb1a.position(2);    // bb3 includes the 5-100 range    bb2.put((byte)77);    // something to see this works when bb2 isn't empty    int n = transferAsMuchAsPossible(bb2, bb1a);    boolean itWorked = (n == 49);    if (bb1a.position() != 51)        itWorked = false;    if (bb2.position() != 50)        itWorked = false;    bb2.rewind();    if (bb2.get() != 77)        itWorked = false;    for (int i = 0; i < 49; ++i)    {        if (bb2.get() != i+7)        { itWorked = false; break;        }    }    return itWorked;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号