Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите начинающему с СИ
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Serguey_A
Помогите начинающему.
Как преобразовать число в массив?

Есть число
int A=64 //меняется от 0 до 4000
надо преобразовать в двоичное и получить массив
str[13]={0,0,0,0,0,0,1,0,0,0,0,0,0};

LPC2106/IAR4,40
kichkine
Цитата(Serguey_A @ Mar 7 2007, 09:18) *
Помогите начинающему.
Как преобразовать число в массив?

Есть число
int A=64 //меняется от 0 до 4000
надо преобразовать в двоичное и получить массив
str[13]={0,0,0,0,0,0,1,0,0,0,0,0,0};

LPC2106/IAR4,40


Каждый бит в свой отдельный байт? Тогда str должен быть явно не меньше 32-х.
Если leading zeros надо отбросить - уменьшить счетчик цикла.

for(i = 0; i < 8*sizeof(int); i++){
if(A & (1 << i)){
str[31-i] = 1;
}else{
str[31-i] = 0;
}
}
Ivan_Kov
Цитата(Serguey_A @ Mar 7 2007, 10:18) *
Помогите начинающему.
Как преобразовать число в массив?

Есть число
int A=64 //меняется от 0 до 4000
надо преобразовать в двоичное и получить массив
str[13]={0,0,0,0,0,0,1,0,0,0,0,0,0};

LPC2106/IAR4,40


типа того
Код
void IntToBin(int N,char *Str)
{
   unsigned int i,Msk;
   Msk=0x80000000;
   i=0;
   while(Msk)
   {
      if(N&Msk)
         Str[i]='1';
      else
         Str[i]='0';
      i++;
      Msk=Msk>>1;
   };
   Str[i]=0;
};

только кажется мне, к арму это не имеет отношения
Serguey_A
Спасибо за помощь.
Сергей Борщ
Цитата(Serguey_A @ Mar 7 2007, 09:53) *
Спасибо за помощь.
Возможен и такой вариант
Код
#define SIZE_BITS(var)  (sizeof(var) * __CHAR_BITS__)
void IntToBin(int N,char *Str)
{
    uint8_t i;
    for(i =0; i < SIZE_BITS(N); i++)
    {
        if(N & (1 << (SIZE_BITS(N) - 1)))
            *Str++ = '1';
        else
            *Str++ = '0';

        N <<= 1;
    }
}

#undef SIZE_BITS
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.