obstream

二进制写入流,可以非常方便地进行二进制编码,写入数值类型时自动转换为网络字节序

命名空间

namespace yasio

成员

函数名 函数说明
obstream::obstream 构造obstream对象

公共方法:

函数名 函数说明
obstream::write_i 函数模板,写入数值数据,会自动转化为网络字节序
obstream::write_i24 写入24位有符号整数
obstream::write_u24 写入24位无符号整数
obstream::write_7b 写入7bit Encoded Int变长存储
obstream::write_v 写入字节流数据,会先写入7bit编码的变长长度域
obstream::write_v32 写入字节流数据,使用32bit长度域
obstream::write_v16 写入字节流数据,使用16bit长度域
obstream::write_v8 写入字节流数据,使用8bit长度域
obstream::write_byte 写入一个字节
obstream::write_bytes 写入字节流数据,不含长度域
obstream::buffer 获取stream中所有字节流数据
obstream::empty 判断stream是否为空
obstream::length 获取stream总字节数
obstream::data 获取字节数据指针
obstream::pwrite_i 在指定偏移位置写入数值数据,会自动转化为网络字节序
obstream::swrite_i 静态方法,在指定地址写入数值数据,会自动转化为网络字节序
obstream::sub 截取子stream,返回新obstream对象

Example

obstream obs;

// 内存布局|-8bits-|
obs.write_i<int8_t>(12);

// 内存布局|-8bits-|-32bits-|
obs.push32();

// 内存布局|-8bits-|-32bits-|-16bits-|
obs.write_i<int16_t>(52013);

// 内存布局|-8bits-|-32bits-|-16bits-|-8bits(length of the string)-|-88bits(the string)-|
obs.write_v8("hello world");

// 将整包长度字节数写入最近一次push保留的4字节内存,完成封包,内存布局不变
obs.pop32(obs.length());