Bytes
概述
字节流对象。javascript语言本身没有字节流的数据类型,此对象用于处理嵌入式系统中的各种字节流逻辑。
常量
数值类型
填充或获取字节流中的数值类型:
常量 | 说明 |
---|---|
"1b" | 数值按一个字节处理,即值范围是0~0xff |
"2l" | 数值按两个字节小端模式处理,即值范围是0~0xffff |
"2b" | 数值按两个字节大端模式处理,即值范围是0~0xffff |
"4l" | 数值按四个字节小端模式处理,即值范围是0~0xffffffff |
"4b" | 数值按四个字节大端模式处理,即值范围是0~0xffffffff |
"fl" | 数值按浮点数小端模式处理,数据占四个字节 |
"fb" | 数值按浮点数大端模式处理,数据占四个字节 |
"dl" | 数值按双精度浮点数小端模式处理,数据占八个字节 |
"db" | 数值按双精度浮点数大端模式处理,数据占八个字节 |
"i3412" | 数值为双字整型,字节排序为3412,比如0x55667788,在字节流里为 77 88 55 66 |
"i2143" | 数值为双字整型,字节排序为2143,比如0x55667788,在字节流里为 66 55 88 77 |
"f3412" | 数值为浮点数,字节排序为3412,比如0x55667788,在字节流里为 77 88 55 66 |
"f2143" | 数值为浮点数,字节排序为2143,比如0x55667788,在字节流里为 66 55 88 77 |
"d7856" | 数值为双精度浮点数,字节排序为78563412,比如0x1122334455667788,在字节流里为 77 88 55 66 33 44 11 22 |
"d2143" | 数值为双精度浮点数,字节排序为21436587,比如0x1122334455667788,在字节流里为 22 11 44 33 66 55 88 77 |
结构定义
结构定义为一个字符串数组,数组长度必须为偶数,两两一组表示一个成员。
比如var st = ["level", "4b", "temperature", "4b", "name", "s10"];
每个成员的第一个字符串为变量名称,不要用关键字。 每个成员的第二个字符串为数据类型,数字类型的值用上一节的数值类型定义,字符串类型则用s开头加上长度。
属性
length
获取字节流的长度
[n]
用于获取或设置第n个字节的值。
函数
create
初始化一个Bytes对象,分配一个字节流缓冲区,初始化为全0
Bytes.create(size)
Bytes.create(src [,type])
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
size | true | int | 字节流缓冲区大小,受内存限制,建议尽量使用小于1k的字节流 |
src | true | String | 字节流初始化内容,字节流长度取决于src内容和类型 |
type | false | String | 字节流初始化内容的类型,值为"str"时,创建一个和字符串等长的字节流,并用字符串内容填充;值为"hex"时,字符串为十六进制,每两个字符表示一个字节,如src为“010D",字节长度为2,第一个字节为0x01, 每二字节为0x0D; 忽略时类型为"str" |
return | bytes | 新字节流对象 |
seti
设置数值到字节流中
obj_bytes.seti(value [,pos [,type]])
参数 必选 类型 说明 value true int 设置的数值 pos false int 设置的位置,忽略则使用0 type false String 设置的数值类型,详见本节数据类型;忽略时使用"1b" return null 无返回值
geti
从字节流中获取数值
obj_bytes.geti([pos [,type]])
参数 必选 类型 说明 pos false int 获取的位置,忽略则使用0 type false String 获取的数值类型,详见本节数据类型;忽略时使用"1b" return int 结果数值
sets
设置字符串到字节流中
obj_bytes.sets(value [,pos [,len]])
参数 必选 类型 说明 value true String 设置的字符串 pos false int 设置的起始位置,忽略则使用0 len false int 设置内容的长度,如果len超过字符串长度则使用字符串长度;忽略也用字符串长度;填充内容超出字节流空间会被截断 return null 无返回值
gets
从字节流中获取字符串
obj_bytes.gets([pos [,len]])
参数 必选 类型 说明 pos false int 获取的起始位置 len false int 获取字符串的长度,如果该长度内有'\0',则字符串只到'\0'的位置;如果len超出字节流空间则只取到结尾 return String 结果字符串
setv
设置一个结构到字节流中
obj_bytes.setv(st, value [,pos])
参数 必选 类型 说明 st true Array 结构定义数组,详见本节结构定义 value true Object 设置的结构对象,必须包含st中的所有变量属性 pos false int 设置的起始位置,忽略则使用0,起始位置后面的字节流长度必须大于结构定义长度 return null 无返回值
getv
从字节流中获取一个结构,字节流长度必须大于结构定义长度
obj_bytes.getv(st, [pos [,obj]])
参数 必选 类型 说明 st true Array 结构定义数组,详见本节结构定义 pos false int 获取的起始位置 ,忽略则使用0,起始位置后面的字节流长度必须大于结构定义长度 obj false Object 获取的数值存放的对象,如果忽略则创建一个新对象 return Object 结果结构对象
sub
截取部分字节流
obj_bytes.sub([pos [,len]])
参数 必选 类型 说明 pos false int 截取的起始位置,忽略则为0 len false int 截取内容的长度,忽略则到字节流结尾 return bytes 截取结果
copy
复制字节流数据
obj_bytes.copy(obj_src [,pos_dst [,len [,pos_src]]])
参数 必选 类型 说明 obj_src true Bytes 源字节流对象 pos_dst false int 复制的目标起始位置,忽略则为0 len false int 复制内容的长度,忽略则为源字节流的长度;如果内容长度超过目的字节流空间,则截断剩余内容 pos_src false int 复制的源起始位置,忽略则为0 return bytes 截取结果
hex
格式化为十六进制字符串
obj_bytes.hex([capital])
参数 必选 类型 说明 capital false boolean 是否为大写,忽略为小写 return String 十六进制字符串