remain length为可变长整数,最少一个字节,最多4个字节

    画板

    每字节最高位作为后续字节标记位,剩余7字节作为字节长度

    1. uint32_t MQTT_variable_length_decode(uint8_t *code)
    2. {
    3. uint8_t temp = 0;
    4. uint8_t cnt = 0;
    5. uint32_t length = 0;
    6. long multiplier = 1;
    7. do {
    8. length += (code[cnt] & 0x7f) * multiplier;
    9. multiplier *= 128;
    10. }while((code[cnt] & 0x80) != 0)
    11. }
    1. uint8_t MQTT_variable_length_encode(uint8_t *code, uint32_t length)
    2. {
    3. long divider = 1;
    4. uint8_t cnt = 0;
    5. do {
    6. code[cnt] = length % 128u;
    7. length /= 128u;
    8. if (length > 0)
    9. code[cnt] |= 0x80;
    10. }while(length > 0)
    11. }