Android 解析 ByteArrayInputStream
来源:互联网 发布:林姗姗sunny淘宝店 编辑:程序博客网 时间:2024/06/08 04:04
Android彩信解码函数,需要从输入流中解析字段。
今天又看了一下pduparse中几个解析函数,在这里做个总结。
大概可以分为3类
一、解析字节
1.extractByteValue
这个啥也没的说,就是把一个byte转换成一个整型返回。
二、解析整型
1.parseShortInteger
基本同时,只是返回的有效位不一样,取这个byte的前7位,因此范围0-127
就 return temp & 0x7F; 这句不一样。
2.parseUnsignedInt
解析一个无符号整型。
首先判断第一个数字最高位,如果是0,取这个字节的低7位返回。
如果是1,就继续读下一位,直到读到高位为0的byte为止,最后把各个byte的低7位串成一个整型返回。
相当于每一个byte只有7为有效。
由于一个int最多32为,所以用这种方式表示的字节流不会超过5(32/7)个octec(8位字节).
3、 parseLongInteger
这个解析一个长整型
先读取一个count,表示该整型由多少octet组成,然后读响应字节,组成一个长整型。
由于长整型最多8个字节,所以这个count不会大于8.
再者,由于有了长度,它不需要用高位来标示结束符,因此每一个字节8位都有效。
4.parseIntegerValue
解析整型。
先读取第一个字节,如果大于SHORT_INTEGER_MAX(127),即高位为1,则认为是一个short int,直接返回低7位。
否则就解析长int,先读取长度,再解析该长度的自己组成一个整型。
5.parseValueLength
读取第一个的8位字节,如果小于SHORT_LENGTH_MAX(30),返回。
如果等于LENGTH_QUOTE(31),按照parseUnsignedInt方法解析。
三、解析字符串
1.parseWapString
首先解析第一个字节,如果字符串类型是TYPE_QUOTED_STRING,并且解析出来的第一个字节标识也是QUOTED_STRING_FLAG(34),就跳过这个标示,准备读下面数据。
如果出入类型是TYPE_TEXT_STRING,并且解析出来的第一个字节也是QUOTE(127),同样也是跳过这个标识,准备读下面数据。
否则,就是没有类型标示的字符串,那么就回退数据流。按照一个字符串来解析getWapString。
2.getWapString
这个没什么好说的,就是读取字节到结束,或者 /0结束为止。
3.parseEncodedStringValue
首先读取第一个字节。
如果小于TEXT_MIN,就是说明这个字节是一个标示符,下面有编码方式。跳过这个字节,读取编码方式,然后调用parseWapString再解析下面的字符串数据。
否则,就是说明这个字符串没有编码方式,单纯一个字符串。就从头将其作为一个字符串解析。
补充,至于这些关键字符SHORT_LENGTH_MAX、LENGTH_QUOTE之类的,是wsp协议规定的,见wap-230-wsp-20010705-a.pdf,在我上传至资源中。
- Android 解析 ByteArrayInputStream
- ByteArrayInputStream的用法解析
- ByteArrayInputStream源码解析
- ByteArrayInputStream
- ByteArrayInputStream example
- ByteArrayOutputStream&ByteArrayInputStream
- ByteArrayOutputStream, ByteArrayInputStream
- ByteArrayInputStream FileInputStream
- java.io.ByteArrayInputStream翻译
- java.io ByteArrayInputStream
- ByteArrayOutputStream/ByteArrayInputStream作用
- java.ByteArrayInputStream-ByteArrayOutputStream
- ByteArrayInputStream与ByteArrayOutputStream类
- ByteArrayInputStream和ByteArrayOutputStream
- ByteArrayInputStream ByteArrayOutputStream CharArrayInputStream CharArrayOutputStream
- ByteArrayOutputStream 和ByteArrayInputStream详解
- java.ByteArrayInputStream-ByteArrayOutputStream
- java.ByteArrayInputStream-ByteArrayOutputStream
- 让你的Win98 跑的更快 电脑加速度
- 逻辑地址、线性地址、物理地址和虚拟地址
- Using Google Visualization API with own data soure(转http://www.jansipke.nl/using-google-visualization-api-with-own-data-source)
- chown & chmod 用法
- POJ 1651 Multiplication Puzzle 动态规划及搜索
- Android 解析 ByteArrayInputStream
- 软件配置管理与SourceSafe使用指南
- msxml的介绍 转
- 关于响度、响度级、声强、声强级、声压、声压级、分贝、方、电平、增益、音高、音分
- 微软下月将发布Windows 8操作系统
- 今天201012142343
- C语言static 关键字浅析!
- 《Linux设备驱动程序》前两章 设备驱动程序 即构造和运行模块:读书笔记
- 图文并茂之.NET程序打包安装与卸载详细教程(!原创)