Beispiel #1
0
/* Return number of bytes needed to serialize integer 'num' in netstring format. */
size_t netstr_int_serialized_len_cb(int num)
{
    size_t str_len_cch;
    size_t total_len_cch;

    str_len_cch = digits_for_number(num);
    total_len_cch = str_len_cch + digits_for_number((int)str_len_cch) + 2;
    return total_len_cch * sizeof(TCHAR);
}
Beispiel #2
0
/* Netstring format is a safe, easy and mostly human readable format for
   serializing strings (well, any binary data). Netstring format is:
   - a byte length of the data as a string
   - ':' (single character)
   - data
   - ',' (single character)
   e.g. "foo" is encoded as "3:foo,"
   I learned about netstring format from djb (http://cr.yp.to/proto/netstrings.txt)
*/
size_t netstr_tstrn_serialized_len_cb(size_t str_len_cch)
{
    size_t total_len_cch;

    /* 2 is for ':" and ',' */
    total_len_cch = str_len_cch + digits_for_number((int)str_len_cch) + 2;
    return total_len_cch * sizeof(TCHAR);
}
void netstr_ut(void)
{
    assert(1 == digits_for_number(0));
    assert(1 == digits_for_number(9));
    assert(2 == digits_for_number(10));
    assert(2 == digits_for_number(19));
    assert(2 == digits_for_number(25));
    assert(3 == digits_for_number(125));
    assert(4 == digits_for_number(3892));
    assert(5 == digits_for_number(38392));
    assert(6 == digits_for_number(889931));
    assert(7 == digits_for_number(7812345));

    assert(1 == digits_for_number(-0));
    assert(2 == digits_for_number(-9));
    assert(3 == digits_for_number(-10));
    assert(4 == digits_for_number(-125));
    assert(5 == digits_for_number(-3892));
    assert(6 == digits_for_number(-38392));
    assert(7 == digits_for_number(-889931));
    assert(8 == digits_for_number(-7812345));
}