跳转至

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 十六进制字符串