当前位置: 首页 > news >正文

违法网站开发者凡科网干嘛的

违法网站开发者,凡科网干嘛的,漳州网站建设点击博大选,大连集团网站建设在写网络程序的时候,经常需要往一个数组里面压数据或者取数据,而Java中再Java.nio中有个ByteBuffer能很方便的实现,Delphi中也有个Stream类有着同样的功能,这里我就模仿JAVA用C#做个最基础的ByteBuffer类 下面是代码 usingSystem;namespaceSystem.ByteBuffer...{ /**//// namespace System.ByteBuffer...{    /**//// summary    /// 创建一个可变长的Byte数组方便Push数据和Pop数据    /// 数组的最大长度为1024,超过会产生溢出    /// 数组的最大长度由常量MAX_LENGTH设定    ///     /// 注:由于实际需要,可能要从左到右取数据,所以这里    /// 定义的Pop函数并不是先进后出的函数,而是从0开始.    ///     /// Author: Red_angelX    /// /summary    class ByteBuffer    ...{        //数组的最大长度        private const int MAX_LENGTH  1024;                //固定长度的中间数组        private byte[] TEMP_BYTE_ARRAY  new byte[MAX_LENGTH];                //当前数组长度        private int CURRENT_LENGTH  0;        //当前Pop指针位置        private int CURRENT_POSITION  0;        //最后返回数组        private byte[] RETURN_ARRAY;        /**//// summary        /// 默认构造函数        /// /summary        public ByteBuffer()        ...{            this.Initialize();        }        /**//// summary        /// 重载的构造函数,用一个Byte数组来构造        /// /summary        /// param namebytes用于构造ByteBuffer的数组/param        public ByteBuffer(byte[] bytes)        ...{            this.Initialize();            this.PushByteArray(bytes);        }            /**//// summary        /// 获取当前ByteBuffer的长度        /// /summary        public int Length        ...{            get            ...{                return CURRENT_LENGTH;            }        }        /**//// summary        /// 获取/设置当前出栈指针位置        /// /summary        public int Position        ...{            get            ...{                return CURRENT_POSITION;            }            set            ...{                CURRENT_POSITION  value;            }        }        /**//// summary        /// 获取ByteBuffer所生成的数组        /// 长度必须小于 [MAXSIZE]        /// /summary        /// returnsByte[]/returns        public byte[] ToByteArray()        ...{            //分配大小            RETURN_ARRAY  new byte[CURRENT_LENGTH];            //调整指针            Array.Copy(TEMP_BYTE_ARRAY, 0, RETURN_ARRAY, 0, CURRENT_LENGTH);            return RETURN_ARRAY;        }        /**//// summary        /// 初始化ByteBuffer的每一个元素,并把当前指针指向头一位        /// /summary        public void Initialize()        ...{            TEMP_BYTE_ARRAY.Initialize();            CURRENT_LENGTH  0;            CURRENT_POSITION  0;        }        /**//// summary        /// 向ByteBuffer压入一个字节        /// /summary        /// param nameby一位字节/param        public void PushByte(byte by)        ...{            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  by;        }        /**//// summary        /// 向ByteBuffer压入数组        /// /summary        /// param nameByteArray数组/param        public void PushByteArray(byte[] ByteArray)        ...{            //把自己CopyTo目标数组            ByteArray.CopyTo(TEMP_BYTE_ARRAY, CURRENT_LENGTH);            //调整长度            CURRENT_LENGTH  ByteArray.Length;        }        /**//// summary        /// 向ByteBuffer压入两字节的Short        /// /summary        /// param nameNum2字节Short/param        public void PushUInt16(UInt16 Num)        ...{            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0xff00)  8)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)((Num  0x00ff)  0xff);        }        /**//// summary        /// 向ByteBuffer压入一个无符Int值        /// /summary        /// param nameNum4字节UInt32/param        public void PushInt(UInt32 Num)        ...{            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0xff000000)  24)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0x00ff0000)  16)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0x0000ff00)  8)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)((Num  0x000000ff)  0xff);        }        /**//// summary        /// 向ByteBuffer压入一个Long值        /// /summary        /// param nameNum4字节Long/param        public void PushLong(long Num)        ...{            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0xff000000)  24)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0x00ff0000)  16)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)(((Num  0x0000ff00)  8)  0xff);            TEMP_BYTE_ARRAY[CURRENT_LENGTH]  (byte)((Num  0x000000ff)  0xff);        }        /**//// summary        /// 从ByteBuffer的当前位置弹出一个Byte,并提升一位        /// /summary        /// returns1字节Byte/returns        public byte PopByte()        ...{            byte ret  TEMP_BYTE_ARRAY[CURRENT_POSITION];            return ret;        }        /**//// summary        /// 从ByteBuffer的当前位置弹出一个Short,并提升两位        /// /summary        /// returns2字节Short/returns        public UInt16 PopUInt16()        ...{            //溢出            if (CURRENT_POSITION  1  CURRENT_LENGTH)            ...{                return 0;            }            UInt16 ret  (UInt16)(TEMP_BYTE_ARRAY[CURRENT_POSITION]  8 | TEMP_BYTE_ARRAY[CURRENT_POSITION  1]);            CURRENT_POSITION  2;            return ret;        }        /**//// summary        /// 从ByteBuffer的当前位置弹出一个uint,并提升4位        /// /summary        /// returns4字节UInt/returns        public uint PopUInt()        ...{                        if (CURRENT_POSITION  3  CURRENT_LENGTH)                return 0;            uint ret  (uint)(TEMP_BYTE_ARRAY[CURRENT_POSITION]  24 | TEMP_BYTE_ARRAY[CURRENT_POSITION  1]  16 | TEMP_BYTE_ARRAY[CURRENT_POSITION  2]  8 | TEMP_BYTE_ARRAY[CURRENT_POSITION  3]);            CURRENT_POSITION  4;            return ret;        }        /**//// summary        /// 从ByteBuffer的当前位置弹出一个long,并提升4位        /// /summary        /// returns4字节Long/returns        public long PopLong()        ...{            if (CURRENT_POSITION  3  CURRENT_LENGTH)                return 0;            long ret  (long)(TEMP_BYTE_ARRAY[CURRENT_POSITION]  24 | TEMP_BYTE_ARRAY[CURRENT_POSITION  1]  16 | TEMP_BYTE_ARRAY[CURRENT_POSITION  2]  8 | TEMP_BYTE_ARRAY[CURRENT_POSITION  3]);            CURRENT_POSITION  4;            return ret;        }        /**//// summary        /// 从ByteBuffer的当前位置弹出长度为Length的Byte数组,提升Length位        /// /summary        /// param nameLength数组长度/param        /// returnsLength长度的byte数组/returns        public byte[] PopByteArray(int Length)        ...{            //溢出            if (CURRENT_POSITION  Length  CURRENT_LENGTH)            ...{                return new byte[0];            }            byte[] ret  new byte[Length];            Array.Copy(TEMP_BYTE_ARRAY, CURRENT_POSITION, ret, 0, Length);            //提升位置            CURRENT_POSITION  Length;            return ret;        }    }}            由于实际需要我是要从byteArray中从左到右取数据,所以才定义了一个CURRENT_POSITION的变量,如果需要从右到左弹数据并减小Buffer的长度则直接用 --CURRENT_LENGTH就可以了转载于:https://www.cnblogs.com/anbylau2130/p/3233207.html
http://www.huolong8.cn/news/95312/

相关文章:

  • 网站视频提取软件app免费网站电视剧全免费
  • 网站建设的目的包含哪些方面wordpress floating menu
  • 网站建设图片教程视频静态网站制作模板
  • 做网站运用的技术wordpress能开发商城网站吗
  • 定制网站建设电话知名广告公司有哪些
  • 做市场推广应该掌握什么技巧佛山seo外包平台
  • 阿里巴巴网站如何做固定背景婚纱销售网站
  • 云南省做网站开发的公司排名wordpress 阿里云主机
  • 上海网站架设wordpress整站模板
  • 展示网站源码下载百度的网站网址
  • 深圳专业专业网站设计公司做网站赚50万
  • 清远网站开发公司钢构网架加工厂
  • 东台市住房和城乡建设局网站wordpress 企业沟通插件
  • 临清网站建设费用品牌建设与市场推广
  • 成都都江堰网站建设北京网站代运营公司
  • wordpress+药品食品网站快照优化公司
  • 企业网站建设定制软件技术一个月工资多少
  • 人才招聘网站模板html做微整去那个网站找好的医院
  • 广州做外贸网站建设构建自己网站
  • 中国芗城区城乡建设局网站怎么查看网站打开速度
  • 商务网站建设评估的指标前端网课
  • 商城网站建设快速服务订货网站开发价格
  • 微站设计做设计用哪个素材网站好
  • 自考网站建设与管理资料成都网页设计师
  • c2c网站制作定制网站开发食道里感觉有东西堵
  • 宁波网站怎么建设网站建设 深圳
  • 做证券考试的网站wordpress主题js文件在哪
  • 工商注册在哪个网站前端开发是程序员吗
  • 薛城网站建设怎么弄一个自己的网址
  • 做网站虚拟主机推荐为什么想做网站运营