VOOVAN源码bug修复之一TByteBuffer
2017-09-14 11:41
162 查看
源码如下:
测试如下:
查找不到自定的字节,定位问题如下:
问题在于Buffer.remaining()方法是动态返回当前位置与限制之间的元素数。
bug修改如下:
打个广告:voovan地址:https://gitee.com/helyho/Voovan
/** * 查找特定 byte 标识的位置 * byte 标识数组第一个字节的索引位置 * @param byteBuffer Bytebuffer 对象 * @param mark byte 标识数组 * @return 第一个字节的索引位置 */ public static int indexOf(ByteBuffer byteBuffer, byte[] mark){ if(byteBuffer.remaining() == 0){ return -1; } int index = -1; int position = byteBuffer.position(); byte[] tmp = new byte[mark.length]; for(int offset = 0; (offset + position <= byteBuffer.remaining() - mark.length); offset++){ byteBuffer.position(position + offset); byteBuffer.get(tmp, 0, tmp.length); if(Arrays.equals(mark, tmp)){ index = offset; break; } } byteBuffer.position(position); return index; }
测试如下:
private ByteBuffer b ; public void setUp() throws IOException { b = ByteBuffer.allocate(10); b.put("helyho".getBytes()); }
public void testRun() { b.flip();//b.put("helyho".getBytes()); int a = TByteBuffer.indexOf(b,"ho".getBytes()); System.out.println(a); }
查找不到自定的字节,定位问题如下:
问题在于Buffer.remaining()方法是动态返回当前位置与限制之间的元素数。
bug修改如下:
打个广告:voovan地址:https://gitee.com/helyho/Voovan
相关文章推荐
- 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)
- AndFix Bug热修复框架原理及源码解析
- 100%高仿2016年互站网源码(修复多处BUG2016年8月5日更新
- php源码阅读----php5.3.27 mysqli扩展bug及修复
- 价值100W的经验分享: 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
- AndFix Bug热修复框架原理及源码解析
- 100%高仿2016年互站网源码(修复多处BUG2016年8月5日更新
- 价值100W的经验分享: 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
- python 3.5下xadmin的使用及修复源码bug
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
- Alibaba-AndFix Bug热修复框架原理及源码解析
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
- PhotoView源码初始化BUG修复
- Alibaba-AndFix Bug热修复框架原理及源码解析
- Android-FixBug热修复框架的使用及源码分析(不发版修复bug)
- 修改subsonic源码,修复一个多表查询的排序bug
- DC.Web.HttpCompress 压缩模块发布(采用原作者最新版,修复2处Bug,增加缓存功能)!(更新源码)
- SnackBar 源码bug修复、源码解析
- 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)