Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 5.00
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
#1

Как преобразовать число в массив байт - C++

16.12.2012, 21:34. Просмотров 3591. Ответов 7
Метки нет (Все метки)

C++
1
int n = 222333; // hex: 0003647D
нужно получить массив байт из переменной n вида:

C++
1
byte m[] = {0x00, 0x03, 0x64 ,0x7D}; // порядок не имеет значения ..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 21:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как преобразовать число в массив байт (C++):

не получаеться преобразовать 8 ьит в 1 байт (биты в десятичное число) - C++
вот код надо написать на с++ но решил на дельфи но он не работает что то как будто проскакивает последний разряд const _SIZE =...

Как преобразовать массив char в число double? - C++
Например: char a=0.25 в double b=0.25

не получается преобразовать дату(как массив типа char) в число... - C++
Из файла считывается дата в виде символьного массива типа char,далее мне нужно преобразовать ее в числовой массив типа int. я пытаюсь...

Объединить массив байт в целое число в с++ - C++
Привет! Нужно сдвинуть биты в каждом байте циклически вправо на случайное число N из диапазона 0..7 Разбить целое число на байты не...

Как из 4-х байт, составляющих число типа double, получить это число? - C++
Как из 4-х байт, составляющих число типа double, получить это число? Пример: unsigned char tmp={63,128,0,0}; // значение double=1.0

Как определить, сколько байт занимает массив? - C++
Как определить сколько байт занимает массив? Приведите фрагмент кода, с помощью которого можно это определить.

7
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
16.12.2012, 21:36 #2
Кастуйте к char*
0
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
16.12.2012, 21:55  [ТС] #3
Вообщем есть прототип
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int number = 0x0069FB1F;
byte mass[4];
for(int i = 0; i < 4; ++i)
{
    mass[i] = ((char*)&number)[i];
    cout << hex << (int)mass[i] << endl;
}
/* Выводит:
1F
FB
69
0
*/
Но в массиве char символы, как их перевести в цифры?
C++
1
mass[i] = (int)mass[i]; // такое почему то не работает и byte
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
16.12.2012, 22:00 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iomanip>
int main(){
    int n=0xFF5412E4;
    unsigned char barr[4];
    memcpy(barr,&n,sizeof(n));
    for(int i=0;i<sizeof(barr);++i){
        std::cout<<std::setbase(16)<<static_cast<unsigned int>(barr[i])<<std::endl;
    }
    std::cin.get();
    return 0;
}
1
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
16.12.2012, 22:18  [ТС] #5
ну тут тоже самое, если сделать так
C++
1
cout << barr[1];
отобразится символ, мат. операции выполняются но все же хотелось массив byte
0
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
16.12.2012, 22:53  [ТС] #6
Цитата Сообщение от daslex Посмотреть сообщение
это одно

Не по теме:

получить массив типа byte - это другое.
если будете правильно говорить, то будете гораздо быстрее получать ответы

в 1 посте что указанно?
byte m[] = {0x00, 0x03, 0x64 ,0x7D}; // порядок не имеет значения ..
даже с примером
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
16.12.2012, 23:01 #7
Цитата Сообщение от [Alex
;3868665]отобразится символ, мат. операции выполняются но все же хотелось массив byte
перед выводом кастуйте к (unsigned int)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Зверство
#include <iostream>
#include <iomanip>
 
int main(){ 
    unsigned int n=0xFF5698FE;
    unsigned int arr[4];
    for(int i=0;i<sizeof(n);++i){
        arr[i]=(n<<((sizeof(n)-i-1)*8))>>((8*(sizeof(n)-1)));
    }
 
    for(int i=0;i<sizeof(n);++i)
        std::cout<<std::setbase(16)<<arr[i]<<" ";
 
    std::cin.get();
    return 0;
}
Добавлено через 46 секунд
Цитата Сообщение от [Alex
;3868857]byte
что имеется ввиду под byte?
C++
1
typedef unsigned char byte?
так разница в чем?
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,048
Записей в блоге: 17
17.12.2012, 00:55 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
union A
{
 int i;
 char byte[4];
};
//---------------------------------------------------------------------------
int main()
{
using namespace std;
 
A a;
 
a.i= 0x0003647D;
 
for(int i=3; i>=0; i--)
    cout<< hex << (int)a.byte[i] <<" ";
 
cout<<endl;
system("pause");
return 0;
}
//---------------------------------------------------------------------------
0
17.12.2012, 00:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 00:55
Привет! Вот еще темы с ответами:

Как преобразовать массив в динамический? Массив вычисляет сумму элементов каждой диагонали матрицы - C++
Ошибка : Вызвано исключение по адресу 0x00BB2F4F в Проект6.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE05. #...

Как преобразовать число в строку - C++
Здравствуйте! У меня такой вопрос: Нужно выводить на экран числа.Функция принимает указатель на строку Font-&gt;DrawTextA(NULL, ...

Как преобразовать шестнадцатеричное число в строку? - C++
как записать в строку шестнадцатеричное число? например 111111111 в основании 16 в строке должно выглядеть как 4581298449 в основании 10

Как преобразовать большое число в строку - C++
Делаю такое преобраование char szbuff; double X=3292373930; sprintf(szbuff, &quot;%g&quot;, X); string X_str=szbuff; В результате...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru