Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#include <iostream>
 
using std::cout;
using std::endl;
 
// функция преобразует четыре бита в их строковое представление
void
numToBin( char num, char *res )
{
    switch( num )
    {
    case 0x0:
        strcat( res, "0000" );break;
    case 0x01:
        strcat( res, "0001" );break;
    case 0x02:
        strcat( res, "0010" );break;
    case 0x03:
        strcat( res, "0011" );break;
    case 0x04:
        strcat( res, "0100" );break;
    case 0x05:
        strcat( res, "0101" );break;
    case 0x06:
        strcat( res, "0110" );break;
    case 0x07:
        strcat( res, "0111" );break;
    case 0x08:
        strcat( res, "1000" );break;
    case 0x09:
        strcat( res, "1001" );break;
    case 0x0A:
        strcat( res, "1010" );break;
    case 0x0B:
        strcat( res, "1011" );break;
    case 0x0C:
        strcat( res, "1100" );break;
    case 0x0D:
        strcat( res, "1101" );break;
    case 0x0E:
        strcat( res, "1110" );break;
    case 0x0F:
        strcat( res, "1111" );break;
    }
}
 
// функция получает из числа его двоичное представление
void
getBinary( void * value, size_t valueSize, char * result, size_t resultSize )
{
    if ( resultSize < valueSize * 8 + 1 ) {
        return;
    }
 
    char *revers = new char[valueSize];
    if ( NULL == revers ) {
        return;
    }
 
    char *ptr = (char*)value;
    for ( int i = valueSize-1; i >= 0; --i ) {
        revers[i] = *ptr;
        ptr++;
    }
 
    for ( size_t i = 0, j = 0; i < valueSize; ++i, j+=4 ) {
        numToBin( (revers[i]>>4)&0x0F, result+j );
        numToBin( revers[i]&0x0F, result+j );
    }
    delete revers;
    revers = NULL;
}
 
int
main( )
{
    float d = 100;
    char res[100] = { 0 };
    getBinary( &d, sizeof d, res, sizeof res );
    cout << res << endl;
    return (EXIT_SUCCESS);
}

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 01:57 21-10-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru