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

типы данных - C++

Восстановить пароль Регистрация
 
hello_hell
 Аватар для hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
24.09.2013, 23:45     типы данных #1
Подскажите как средствами С++ получить доступ к отдельным байтам стандартных типов данных, только без использования асматических вставок.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 23:45     типы данных
Посмотрите здесь:

Типы данных C++
типы данных C++
Типы данных C++ C++
Типы данных C++
типы данных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
25.09.2013, 08:33     типы данных #2
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main()
{
    union
    {
        unsigned char byte[4];
        int integer;
    }   value;
 
    value.integer = 10000;
 
    for (size_t i = 0; i < sizeof(value); ++i)
    {
        std::cout << std::hex << static_cast<unsigned>(value.byte[i]) << " ";
    }
    std::cout << std::endl;
 
    return 0;
}
Добавлено через 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
#include <iostream>
 
template <class T>
unsigned char getByte(T value, size_t byte)
{
    value >>= 8 * byte;
 
    unsigned char result = value & 0xff;
 
    return result;
}
 
int main()
{
    int value = 10000;
    for (size_t i = 0; i < 4; ++i)
    {
        std::cout << std::hex << static_cast<unsigned>(getByte(value, i)) << " ";
    }
    std::cout << std::endl;
 
    return 0;
}
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
25.09.2013, 10:13     типы данных #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
жесть всегда поступал намного проще
char* bytes=&value;
а далее зная размер выделенной памяти под vаlue через функцию sizeof работаешь как с обычным массивом char
только надо помнить, что в памяти располагаются значения от меньшего к большему.
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
25.09.2013, 10:28     типы данных #4
HedgehogLu, в точку! Блин, иногда очевидных вещей не замечаешь! Спасибо!

P.S: "велосипедостроителем" сейчас себя чувствую
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
25.09.2013, 10:36     типы данных #5
да ну сколько людей столько и кодов.
однако простые методы порой небезопасны, вы например постарались сразу себя обезопасить от ошибки доступа памяти. я же полностью это взваливаю на плечи программиста рассчитывая на то, что он то знает что делает
Yandex
Объявления
25.09.2013, 10:36     типы данных
Ответ Создать тему
Опции темы

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