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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 5.00
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
16.12.2012, 21:34     Как преобразовать число в массив байт #1
C++
1
int n = 222333; // hex: 0003647D
нужно получить массив байт из переменной n вида:

C++
1
byte m[] = {0x00, 0x03, 0x64 ,0x7D}; // порядок не имеет значения ..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:36     Как преобразовать число в массив байт #2
Кастуйте к char*
[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
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 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;
}
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
16.12.2012, 22:18  [ТС]     Как преобразовать число в массив байт #5
ну тут тоже самое, если сделать так
C++
1
cout << barr[1];
отобразится символ, мат. операции выполняются но все же хотелось массив byte
[Alex]
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 8
16.12.2012, 22:53  [ТС]     Как преобразовать число в массив байт #6
Цитата Сообщение от daslex Посмотреть сообщение
это одно

Не по теме:

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

в 1 посте что указанно?
byte m[] = {0x00, 0x03, 0x64 ,0x7D}; // порядок не имеет значения ..
даже с примером
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 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?
так разница в чем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 00:55     Как преобразовать число в массив байт
Еще ссылки по теме:

Как преобразовать большое число в строку C++
C++ Объединить массив байт в целое число в с++
C++ Как определить, сколько байт занимает массив?

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 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;
}
//---------------------------------------------------------------------------
Yandex
Объявления
17.12.2012, 00:55     Как преобразовать число в массив байт
Ответ Создать тему
Опции темы

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