ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
tools_code.cpp File Reference

实现工具库中的二进制编解码辅助函数 More...

Classes

struct  ngl::tools::varint_impl
 Varint编码内部实现结构体 More...

Namespaces

namespace  ngl::tools
 工具函数命名空间。

Functions

template<typename T>
bool ngl::tools::enc_base (char *abuf, int alen, const T *adata, int32_t acnt, int32_t *abytes)
 基础编码函数(模板)
template<typename T>
bool ngl::tools::dec_base (const char *abuf, int alen, int32_t *abytes, T *adata, int32_t acnt)
 基础解码函数(模板)
bool ngl::tools::hex_get (unsigned char asrc, unsigned char &adst)
 十六进制字符转数值
void ngl::tools::hex_pair (unsigned char asrc, unsigned char &adst1, unsigned char &adst2)
 字节转十六进制字符对
bool ngl::tools::hex_byte (const unsigned char *asrc, unsigned char *adst)
 十六进制字符对转字节
int ngl::tools::varint_length (parm< int64_t > &avalues)
 计算64位整数的varint编码长度
int ngl::tools::varint_length (parm< int32_t > &avalues)
 计算32位整数的varint编码长度
bool ngl::tools::varint_encode (varint_parm< int64_t > &aparm)
 64位整数varint编码
bool ngl::tools::varint_encode (varint_parm< int32_t > &aparm)
 32位整数varint编码
bool ngl::tools::varint_decode (varint_parm< int64_t > &aparm)
 64位整数varint解码
bool ngl::tools::varint_decode (varint_parm< int32_t > &aparm)
 32位整数varint解码
int ngl::tools::to_hex (void *apso, int alen, void *apto)
 字节数组转十六进制字符串
bool ngl::tools::to_bytes (void *apso, int alen, void *apto, int &aout_len)
 十六进制字符串转字节数组
void ngl::tools::bytexor (char *ap, int32_t aplen, int apos)
 XOR异或加密/解密

Detailed Description

实现工具库中的二进制编解码辅助函数

提供以下功能:

  1. ZigZag编码/解码(将有符号整数映射为无符号整数,减少小负数的varint编码长度)
  2. Varint变长整数编码/解码(Protocol Buffers风格,小数值占用更少字节)
  3. 十六进制字符串与字节数组的相互转换
  4. XOR异或加密/解密(基于配置的密钥循环异或)
Note
本文件中的varint编码采用小端序(Little-Endian),最高位为1表示后续还有字节
See also
tools_code.h