binstr二进制字符串

str字符串是一个以0x00结尾的asc码序列的字符串,也就是非二进制安全的数据串,在日常应用中我们需要用字符串来存储一堆数据,比如曲线的采集数据,而这个数据需要二进制安全,因此我们允许使用二进制安全的字符串,这就是binstr

二进制字符串操作的核心是需要一个句柄来标示字符串,因此在创建,获取各个方面都需要这个句柄(所谓的句柄实际上是一个整形数字,可以理解为编号,或者id号)

binstr分为2中,一种是一字节的二进制数据,一种是二字节的二进制数据,分别如下:

模式 1字节(u8) 2字节(u16)
创建 newbin(u8数量) newbin(u16数量*2)
读取 getbin getbin2
写入 setbin setbin2

关于二进制字符串内存的释放

控件内使用

int bs; //控件属性
void create(){
    bs=newbin(256);
}
void show(){
    //getbin();
}

控件在初始化create的时候,newbin申请了空间,由于create只执行一次,因此不会导致空间不足

但是如果按照下面的代码:

void show(){
    int bs;
    bs=newbin(256);
    ......
}

这样是有问题,由于show函数是频繁调用的,因此不停的newbin申请内存,会导致内存不够而在运行一段时间后系统崩溃;

需要按以下修改:

void show(){
    int bs;
    bs=newbin(256);
    ......
    freestr(bs);
}

目录:

defbin:初始化一个二进制字符串

freestr:释放字符串空间

getadbyval:非线性传感器值逆计算

getbin:读取二进制字符串的某个字节值

getbin2:读取二进制字符串的某个u16值

getbinstr:从bin中获取一个字符串

getmax2:获取二进制字符串的最大u16值

getv:从二进制字符串中读取一个数值

getvalbyad:非线性传感器值计算

newbin:创建一个二进制字符串

setbin:修改二进制字符串的某个字节值

setbin2:修改二进制字符串的某个u16字节值

setbinstr:将一个字符串写入二进制数据中

setv:向二进制字符串中写一个数值