Форум программистов, компьютерный форум CyberForum.ru

преобразовать массив - C++

Восстановить пароль Регистрация
 
belii0987
0 / 0 / 1
Регистрация: 17.10.2009
Сообщений: 49
30.01.2010, 12:31     преобразовать массив #1
вообщем у меня массив
char x[i];
x[0]=3;
x[1]=6;
x[2]=f;

как преобразовать чтоб получилось
X=36f
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
30.01.2010, 13:21     преобразовать массив #2
не понятно что ты имел ввиду, но обычно так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>  // только для getch
 
int main()
{
  char x[4];
    x[0]='3';
    x[1]='6';
    x[2]='f';
    x[3]='\0';
    
    printf("X = %s",x);
    
 
    getch();
    return 0;
}
belii0987
0 / 0 / 1
Регистрация: 17.10.2009
Сообщений: 49
30.01.2010, 15:37  [ТС]     преобразовать массив #3
мне в дальнейшем надо работать с числом к примеру 36f надо чтоб оно было записано в одну переменную.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
30.01.2010, 15:45     преобразовать массив #4
у вас получается есть символьные обозначения числа в 16м виде, если вам просто нужно производить операции над числом, то переведите его в десятичное представление и работайте как с переменной, после преобразований преобразуйте обратно в символьно-16ую форму. способов и примеров по преобразованию из разных систем счислений на форуме навалом
belii0987
0 / 0 / 1
Регистрация: 17.10.2009
Сообщений: 49
30.01.2010, 15:52  [ТС]     преобразовать массив #5
вообще у меня задача такая с клавиатуры вводится число. Произвести чиклический сдвиг его шестнадцатеричного прадставления на К цифр вправо!

после перевода у меня получается число записано в массив а чтоб производить сдвиг надо записать его в одну переменную
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.01.2010, 16:00     преобразовать массив #6
C++
1
2
3
4
5
    unsigned int x[] = { 0x3, 0x6, 0xf };
    unsigned int X = 0, size = 3, *xptr = x;
    
    for(int i = (size - 1); i >= 0; i--)
    X |= (*xptr++ << i*4);
учти, что в каждом элементе массива должно быть только одноразрядное число и размер массива не больше 8 элементов

Добавлено через 7 минут
если для символьного массива то вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
WORD32 atow(char * A)
{
    WORD32 X = 0;
    for(int i = 28; i >= 0; i -= 4)
    {
        switch(*A)
        {
        case 'A':
        case 'B':
        case 'C':
        case 'D':
        case 'E':
        case 'F':
            X |= (WORD32)(((*A++) - 0x37) << i);
            break;
        default:
            X |= (WORD32)(((*A++) - 0x30) << i);
            break;
        }
    }
 
    return X;
}
только здесь в подаваемой строке полюбому должно быть 8 символов и все буквы большие,если не нравится подправляй сам
belii0987
0 / 0 / 1
Регистрация: 17.10.2009
Сообщений: 49
30.01.2010, 21:15  [ТС]     преобразовать массив #7
Цитата Сообщение от fasked Посмотреть сообщение
unsigned int x[] = { 0x3, 0x6, 0xf };
unsigned int X = 0, size = 3, *xptr = x;
for(int i = (size - 1); i >= 0; i--)
X |= (*xptr++ << i*4);
это влево сдвиг. А сдвинутые биты заполняются нулями
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.01.2010, 21:22     преобразовать массив #8
Цитата Сообщение от belii0987 Посмотреть сообщение
это влево сдвиг. А сдвинутые биты заполняются нулями
Спасибо, капитан!
А вообще да, подробности можно узнать здесь -> ВИКА
Умножение на 4, потому что сдвиг битовый, то есть указывается количество бит. Одна цифра в шестнадцатиричной системе счисления представляет собой 4 бита. Затем операция ИЛИ с числом X.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2010, 21:44     преобразовать массив
Еще ссылки по теме:

C++ Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент
Преобразовать массив C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
belii0987
0 / 0 / 1
Регистрация: 17.10.2009
Сообщений: 49
30.01.2010, 21:44  [ТС]     преобразовать массив #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main(){
int x[]={0x4,0x5,0xA,0xD};
int i,X=0;
int *p=x;
  for(i=0;i<5;i++)
    *p=(*p>>i*4)|(*p<<(16-i*4));
 
   for(i=0;i<4;i++)
printf("X=%X ",x[i]);
printf("\n");
}
подскажите что нитак???
Yandex
Объявления
30.01.2010, 21:44     преобразовать массив
Ответ Создать тему
Опции темы

Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru