Re[2]: Перевод строки в 64 бит целое
От: xscream Россия  
Дата: 22.02.08 17:09
Оценка:
А>Думаю многие знают, но лень Вот тебе примерчег:

Спасибо, вот еще вариант:


    char str[] = "12345678901234567890"; // строка на входе 
    unsigned char uc[8]; // массив на выходе

    unsigned long l = 0;
    unsigned long m = 0;
    unsigned long h = 0;
    unsigned char carry;

    for( char *c = str; *c; c++ )
    {
        l += *c - '0';
        if( *(c + 1) )
        {
            l *= 10;
            carry = (unsigned char)((l & 0xFF000000) >> 24);
            l &= 0x00FFFFFF;
            m *= 10;
            m += carry;
            carry = (unsigned char)((m & 0xFF000000) >> 24);
            m &= 0x00FFFFFF;
            h *= 10;
            h += carry;
        }
    }

    uc[7] = (unsigned char)l; l >>= 8;
    uc[6] = (unsigned char)l; l >>= 8;
    uc[5] = (unsigned char)l;

    uc[4] = (unsigned char)m; m >>= 8;
    uc[3] = (unsigned char)m; m >>= 8;
    uc[2] = (unsigned char)m;

    uc[1] = (unsigned char)h; h >>= 8;
    uc[0] = (unsigned char)h;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.