remain length为可变长整数,最少一个字节,最多4个字节
每字节最高位作为后续字节标记位,剩余7字节作为字节长度
uint32_t MQTT_variable_length_decode(uint8_t *code)
{
uint8_t temp = 0;
uint8_t cnt = 0;
uint32_t length = 0;
long multiplier = 1;
do {
length += (code[cnt] & 0x7f) * multiplier;
multiplier *= 128;
}while((code[cnt] & 0x80) != 0)
}
uint8_t MQTT_variable_length_encode(uint8_t *code, uint32_t length)
{
long divider = 1;
uint8_t cnt = 0;
do {
code[cnt] = length % 128u;
length /= 128u;
if (length > 0)
code[cnt] |= 0x80;
}while(length > 0)
}