二进制数据解析 + byteArray类型

来源:互联网 发布:用ps做淘宝店招 编辑:程序博客网 时间:2024/05/21 06:34
                                                     二进制数据解析 + byteArray类型


一个字节有8位 0000 0000,并以二进制存在,故一个位置可以存储0,1数据。所以当位置全部填充为1的时候,为最大数字255.
uint无符号型的整数型,int为有符号型的整数型。这两个都以4个字节形式存在于内存,但int第一位为符号位,0表示
正数,1代表负数。所以uint的取值范围为0-4294967295  int的取值范围为-2147483648 到2147483648。
Number 4个字节 Double 8个字节 一个英文单词1个字节 一个汉字2个字节
[马良:单词就26个字母加上杂七杂八的符号之类的,1个字节有256种可能,那么1个字节就足以表示了
汉字仅日常使用的就有3500,1个字节远远不够,那么就需要更多的空间来表示可能性,
2个字节表示65536,就可以表示]
字节的运算
>> 将类型二进制向右移动  << 将类型二进制向左移动
这里区分符号型的移动,和无符号型的移动
.符号型向右移动 符号位不变,空余位置以0补充,然后负数的取值由补码 + 1取得,首位不变。
16进制为int 类型,有4个字节,如0xffffff,写成2进制为0000 0000 1111 1111 1111 1111 1111 1111;
      0xffffffff,写成2进制为1111 1111 1111 1111 1111 1111 1111 1111;
第二种的情况下,因为该类型为int类型,所以第一位为符号位,1表示该数为负数,而负数的取值由其补码取得,归置为
1000 0000 0000 0000 0000 0000 0000 0000 然后在此基础上再加上1,得到该数的10进制取值为 -1.



                                                   byteArray
一个用于存储字节的数组,可以在每个节点存储不同字节长度,即不同类型转换而成的字节。
利用write 和 read 相关的函数可以进行写入和读写。
写入Write通过下列方法可以写入不同的类型
[写入布尔值]writeBoolean(:Boolean)   [写入带符号的32位整数]writeInt(:int)
[写入一个单精度(32位)浮点数] writeFloat(:Number)  [写入一个单精度(64位)浮点数]wirteDouble(:Number) 
[写入一个16位整数]writeShort(:int) [写入无符号型的32位整数] writeUnsignedInt(:uint)
[将UTF-8字符串写入字节流]writeUTF(:String) writeUTFBytes(:String)  writeObject(:*) 
writeBytes(bytes:ByteArray,offset:uint = 0 ; length : uint = 0)
从bytes的offset开始,读取length个字节放到byteArray里,byteArray从byteArray.position开始放. (bytes的position不变, byteArray的position增加)
然后每次存储数据的时候,会相应的推动position的位移运动 bytesAvailabe 表示的是从当前position到数组末尾读取的数据的字节数
然后当byteArray进行read 或者 write 操作的时候,也会相应的推动当前的position的位移变化。即当前字节数的变化





0 0