ByteArrary(优化数据存储和数据流)
2014-08-14 08:03
218 查看
原地址:http://www.unity蛮牛.com/blog-1801-799.html
首页
博客
相册
主题
留言板
个人资料
今天看了A神的那个RPG教程,里面有一个类是ByteArray,在网上找了应该是个累死优化数据存储和数据流的一个类 ,在网上找了一下前辈们写的教程拿到这里与大家分享一下
ByteArray()
创建一个表示填充的字节数组的 ByteArray 实例,以便使用此类中的方法和属性来优化数据存储和数据流。 ByteArray
compress(algorithm:String):void
压缩字节数组。 ByteArray
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。 Object
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。 Object
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。 Object
readBoolean():Boolean
从字节流中读取布尔值。 ByteArray
readByte():int
从字节流中读取带符号的字节。 ByteArray
readBytes(bytes:ByteArray,offset:uint = 0,length:uint = 0):void
从字节流中读取 length 参数指定的数据字节数。 ByteArray
readDouble():Number
从字节流中读取一个 IEEE 754 双精度(64 位)浮点数。 ByteArray
readFloat():Number
从字节流中读取一个 IEEE 754 单精度(32 位)浮点数。 ByteArray
readInt():int
从字节流中读取一个带符号的 32 位整数。 ByteArray
readMultiByte(length:uint,charSet:String):String
使用指定的字符集从字节流中读取指定长度的多字节字符串。 ByteArray
readObject():*
从字节数组中读取一个以 AMF 序列化格式进行编码的对象。 ByteArray
readShort():int
从字节流中读取一个带符号的 16 位整数。 ByteArray
readUnsignedByte():uint
从字节流中读取无符号的字节。 ByteArray
readUnsignedInt():uint
从字节流中读取一个无符号的 32 位整数。 ByteArray
readUnsignedShort():uint
从字节流中读取一个无符号的 16 位整数。 ByteArray
readUTF():String
从字节流中读取一个 UTF-8 字符串。 ByteArray
readUTFBytes(length:uint):String
从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串。 ByteArray
setPropertyIsEnumerable(name:String,isEnum:Boolean = true):void
设置循环操作动态属性的可用性。 Object
toString():String
将字节数组转换为字符串。 ByteArray
uncompress(algorithm:String):void
解压缩字节数组。 ByteArray
valueOf():Object
返回指定对象的原始值。 Object
writeBoolean(value:Boolean):void
写入布尔值。 ByteArray
writeByte(value:int):void
在字节流中写入一个字节。 ByteArray
writeBytes(bytes:ByteArray,offset:uint = 0,length:uint = 0):void
将指定字节数组 bytes(起始偏移量为 bytes,从 0 开始的索引)中包含 length 个字节的字节序列写入字节流。 ByteArray
writeDouble(value:Number):void
在字节流中写入一个 IEEE 754 双精度(64 位)浮点数。 ByteArray
writeFloat(value:Number):void
在字节流中写入一个 IEEE 754 单精度(32 位)浮点数。 ByteArray
writeInt(value:int):void
在字节流中写入一个带符号的 32 位整数。 ByteArray
writeMultiByte(value:String,charSet:String):void
使用指定的字符集将多字节字符串写入字节流。 ByteArray
writeObject(object:*):void
将对象以 AMF 序列化格式写入字节数组。 ByteArray
writeShort(value:int):void
在字节流中写入一个 16 位整数。 ByteArray
writeUnsignedInt(value:uint):void
在字节流中写入一个无符号的 32 位整数。 ByteArray
writeUTF(value:String):void
将 UTF-8 字符串写入字节流。 ByteArray
writeUTFBytes(value:String):void
将 UTF-8 字符串写入字节流。 ByteArray
首页
博客
相册
主题
留言板
个人资料
ByteArrary(优化数据存储和数据流)
分类:unity3D学习篇 评论:1 条 阅读:336 次 2014-6-2 22:58csharpcode:
[code]001 | public class ByteArray |
002 | { |
003 | private MemoryStream m_Stream = new MemoryStream(); |
004 | private BinaryReader m_Reader = null ; |
005 | private BinaryWriter m_Writer = null ; |
006 |
007 | public ByteArray() |
008 | { |
009 | Init(); |
010 | } |
011 |
012 | public ByteArray(MemoryStream ms) |
013 | { |
014 | m_Stream =ms; |
015 | Init(); |
016 | } |
017 |
018 | public ByteArray( byte [] buffer) |
019 | { |
020 | m_Stream = new MemoryStream(buffer); |
021 | Init(); |
022 | } |
023 |
024 | private void Init() |
025 | { |
026 | m_Writer = new BinaryWriter(m_Stream); |
027 | m_Reader = new BinaryReader(m_Stream); |
028 | } |
029 |
030 | public int Length |
031 | { |
032 | get { return ( int )m_Stream.Length; } |
033 | } |
034 |
035 | public int Postion |
036 | { |
037 | get { return ( int )m_Stream.Position; } |
038 | set {m_Stream.Position = value; } |
039 | } |
040 |
041 | public byte [] Buffer |
042 | { |
043 | get { return m_Stream.GetBuffer(); } |
044 | } |
045 |
046 | internal MemoryStream MemoryStream { get { return m_Stream; } } |
047 |
048 | public bool ReadBoolean() |
049 | { |
050 | return m_Reader.ReadBoolean(); |
051 | } |
052 |
053 | public byte ReadByte() |
054 | { |
055 | return m_Reader.ReadByte(); |
056 | } |
057 |
058 | public void ReadBytes( byte [] bytes, uint offset, uint length) |
059 | { |
060 | byte [] tmp = m_Reader.ReadBytes(( int )length); |
061 | for ( int i = 0; i < tmp.Length; i++) |
062 | bytes[i + offset] = tmp[i]; |
063 | //m_Reader.ReadBytes(bytes,offset,length); |
064 | } |
065 |
066 | public double ReadDouble() |
067 | { |
068 | return m_Reader.ReadDouble(); |
069 | } |
070 |
071 | public float ReadFloat() |
072 | { |
073 | byte [] bytes = m_Reader.ReadBytes(4); |
074 | byte [] invertedBytes = new byte [4]; |
075 | //Grab the bytes in reverse order from the backwards index |
076 | for ( int i = 3,j = 0; i >= 0; i--,j++) |
077 | { |
078 | invertedBytes[j] = bytes[i]; |
079 | } |
080 | float value = BitConverter.ToSingle(invertedBytes,0); |
081 | return value; |
082 |
083 | // return m_Reader.ReadFloat(); |
084 | } |
085 |
086 | public int ReadInt() |
087 | { |
088 | return m_Reader.ReadInt32(); |
089 | } |
090 |
091 | public short ReadShort() |
092 | { |
093 | return m_Reader.ReadInt16(); |
094 | } |
095 |
096 | public byte ReadUnsignedByte() |
097 | { |
098 | return m_Reader.ReadByte(); |
099 | } |
100 |
101 | public uint ReadUnsignedInt() |
102 | { |
103 | return ( uint )m_Reader.ReadInt32(); |
104 | } |
105 |
106 | public ushort ReadUnsignedShort() |
107 | { |
108 | return m_Reader.ReadUInt16(); |
109 | } |
110 |
111 | public string ReadUTF() |
112 | { |
113 | return m_Reader.ReadString(); |
114 | } |
115 |
116 | public string ReadUTFBytes( uint length) |
117 | { |
118 | if (length == 0) |
119 | return string .Empty; |
120 | UTF8Encoding utf8 = new UTF8Encoding( false , true ); |
121 | byte [] encodedBytes = m_Reader.ReadBytes(( int )length); |
122 | string decodedString = utf8.GetString(encodedBytes,0,encodedBytes.Length); |
123 | return decodedString; |
124 | } |
125 |
126 | public void WriteBoolean( bool value) |
127 | { |
128 | m_Writer.BaseStream.WriteByte(value ? (( byte )1) : (( byte )0)); |
129 | // m_Writer.WriteBoolean(value); |
130 | } |
131 | public void WriteByte( byte value) |
132 | { |
133 | m_Writer.BaseStream.WriteByte(value); |
134 | // m_Writer.WriteByte(value); |
135 | } |
136 | public void WriteBytes( byte [] buffer) |
137 | { |
138 | for ( int i = 0; buffer != null && i < buffer.Length; i++) |
139 | m_Writer.BaseStream.WriteByte(buffer[i]); |
140 | } |
141 | public void WriteBytes( byte [] bytes, int offset, int length) |
142 | { |
143 | for ( int i = offset; i < offset + length; i++) |
144 | m_Writer.BaseStream.WriteByte(bytes[i]); |
145 | } |
146 | public void WriteDouble( double value) |
147 | { |
148 | byte [] bytes = BitConverter.GetBytes(value); |
149 | WriteBigEndian(bytes); |
150 | } |
151 | public void WriteFloat( float value) |
152 | { |
153 | byte [] bytes = BitConverter.GetBytes(value); |
154 | WriteBigEndian(bytes); |
155 | } |
156 | private void WriteBigEndian( byte [] bytes) |
157 | { |
158 | if (bytes == null ) |
159 | return ; |
160 | for ( int i = bytes.Length - 1; i >= 0; i--) |
161 | { |
162 | m_Writer.BaseStream.WriteByte(bytes[i]); |
163 | } |
164 | } |
165 |
166 | public void WriteInt32( int value) |
167 | { |
168 | byte [] bytes = BitConverter.GetBytes(value); |
169 | WriteBigEndian(bytes); |
170 | } |
171 |
172 | public void WriteInt( int value) |
173 | { |
174 | WriteInt32(value); |
175 | } |
176 |
177 | public void WriteShort( int value) |
178 | { |
179 | byte [] bytes = BitConverter.GetBytes(( ushort )value); |
180 | WriteBigEndian(bytes); |
181 | } |
182 |
183 | public void WriteUnsignedInt( uint value) |
184 | { |
185 | WriteInt32(( int )value); |
186 | } |
187 |
188 | public void WriteUTF( string value) |
189 | { |
190 | UTF8Encoding utf8Encoding = new UTF8Encoding(); |
191 | int byteCount = utf8Encoding.GetByteCount(value); |
192 | byte [] buffer = utf8Encoding.GetBytes(value); |
193 | WriteShort(byteCount); |
194 | if (buffer.Length > 0) |
195 | m_Writer.Write(buffer); |
196 | } |
197 |
198 | public void WriteUTFBytes( string value) |
199 | { |
200 | UTF8Encoding utf8Encoding = new UTF8Encoding(); |
201 | byte [] buffer = utf8Encoding.GetBytes(value); |
202 | if (buffer.Length > 0) |
203 | m_Writer.Write(buffer); |
204 | } |
205 |
206 | public void WriteStringBytes( string value) |
207 | { |
208 | UTF8Encoding utf8Encoding = new UTF8Encoding(); |
209 | byte [] buffer = utf8Encoding.GetBytes(value); |
210 | if (buffer.Length > 0) |
211 | { |
212 | m_Writer.Write(buffer.Length); |
213 | m_Writer.Write(buffer); |
214 | } |
215 | } |
216 | } |
ByteArray()
创建一个表示填充的字节数组的 ByteArray 实例,以便使用此类中的方法和属性来优化数据存储和数据流。 ByteArray
compress(algorithm:String):void
压缩字节数组。 ByteArray
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。 Object
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。 Object
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。 Object
readBoolean():Boolean
从字节流中读取布尔值。 ByteArray
readByte():int
从字节流中读取带符号的字节。 ByteArray
readBytes(bytes:ByteArray,offset:uint = 0,length:uint = 0):void
从字节流中读取 length 参数指定的数据字节数。 ByteArray
readDouble():Number
从字节流中读取一个 IEEE 754 双精度(64 位)浮点数。 ByteArray
readFloat():Number
从字节流中读取一个 IEEE 754 单精度(32 位)浮点数。 ByteArray
readInt():int
从字节流中读取一个带符号的 32 位整数。 ByteArray
readMultiByte(length:uint,charSet:String):String
使用指定的字符集从字节流中读取指定长度的多字节字符串。 ByteArray
readObject():*
从字节数组中读取一个以 AMF 序列化格式进行编码的对象。 ByteArray
readShort():int
从字节流中读取一个带符号的 16 位整数。 ByteArray
readUnsignedByte():uint
从字节流中读取无符号的字节。 ByteArray
readUnsignedInt():uint
从字节流中读取一个无符号的 32 位整数。 ByteArray
readUnsignedShort():uint
从字节流中读取一个无符号的 16 位整数。 ByteArray
readUTF():String
从字节流中读取一个 UTF-8 字符串。 ByteArray
readUTFBytes(length:uint):String
从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串。 ByteArray
setPropertyIsEnumerable(name:String,isEnum:Boolean = true):void
设置循环操作动态属性的可用性。 Object
toString():String
将字节数组转换为字符串。 ByteArray
uncompress(algorithm:String):void
解压缩字节数组。 ByteArray
valueOf():Object
返回指定对象的原始值。 Object
writeBoolean(value:Boolean):void
写入布尔值。 ByteArray
writeByte(value:int):void
在字节流中写入一个字节。 ByteArray
writeBytes(bytes:ByteArray,offset:uint = 0,length:uint = 0):void
将指定字节数组 bytes(起始偏移量为 bytes,从 0 开始的索引)中包含 length 个字节的字节序列写入字节流。 ByteArray
writeDouble(value:Number):void
在字节流中写入一个 IEEE 754 双精度(64 位)浮点数。 ByteArray
writeFloat(value:Number):void
在字节流中写入一个 IEEE 754 单精度(32 位)浮点数。 ByteArray
writeInt(value:int):void
在字节流中写入一个带符号的 32 位整数。 ByteArray
writeMultiByte(value:String,charSet:String):void
使用指定的字符集将多字节字符串写入字节流。 ByteArray
writeObject(object:*):void
将对象以 AMF 序列化格式写入字节数组。 ByteArray
writeShort(value:int):void
在字节流中写入一个 16 位整数。 ByteArray
writeUnsignedInt(value:uint):void
在字节流中写入一个无符号的 32 位整数。 ByteArray
writeUTF(value:String):void
将 UTF-8 字符串写入字节流。 ByteArray
writeUTFBytes(value:String):void
将 UTF-8 字符串写入字节流。 ByteArray
相关文章推荐
- 大数据优化的分页存储过程-成品
- 优化Oracle的数据存储
- 数据存储《图片加载的性能优化》来自印象笔记
- 润乾集算报表优化应用结构之数据分库存储
- sas优化技巧(2),缩减数据存储空间、length、compress、reuse、data步视图
- SQL优化(索引、存储过程、数据分页的存储过程)
- JVM 数据存储介绍及性能优化
- 不存储数据流的前提下,从输入流中获得这 n 个等概率的随机数据
- Android性能优化之一 数据存储优化
- LAXCUS对数据存储的优化
- PostgreSQL的数据存储(十八)---数据存储的优化
- mysql 百万数据存储过程 查询优化技巧
- 数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(三)
- 不存储数据流的前提下,从输入流中获得这 n 个等概率的随机数据
- 高性能Javascript笔记 数据的存储与访问性能优化
- 优化Oracle的数据存储
- 数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(二)
- 高性能javascript笔记:数据的存储与访问性能优化
- ARM处理器NEON编程及优化技巧——数据加载和存储
- (NEON实例一)ARM处理器NEON编程及优化技巧——数据加载和存储