Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
hello_hell
0 / 0 / 0
Регистрация: 11.08.2013
Сообщений: 26
1

типы данных

24.09.2013, 23:45. Просмотров 1028. Ответов 4
Метки нет (Все метки)

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

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си?
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять...

типы данных
int x1, x2; float summa; x1 = 5; x2 = 6; summa = (x1 + x2)/2; ...

Типы данных
__int64 Z = pow(a,x); long double Y = 9/Z; cout<<Y //Y = 0 Как вывести...

Типы данных
Перекопал везде и всюду, может где-то и есть обьяснение по поводу типов данных....

Типы данных
Здравствуйте! В результате программа должна выводить типы данных переменных и...

4
anmartex
...
1711 / 1204 / 909
Регистрация: 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;
}
1
HedgehogLu
147 / 81 / 10
Регистрация: 04.09.2013
Сообщений: 261
25.09.2013, 10:13 3
Лучший ответ Сообщение было отмечено как решение

Решение

жесть всегда поступал намного проще
char* bytes=&value;
а далее зная размер выделенной памяти под vаlue через функцию sizeof работаешь как с обычным массивом char
только надо помнить, что в памяти располагаются значения от меньшего к большему.
2
anmartex
...
1711 / 1204 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
25.09.2013, 10:28 4
HedgehogLu, в точку! Блин, иногда очевидных вещей не замечаешь! Спасибо!

P.S: "велосипедостроителем" сейчас себя чувствую
1
HedgehogLu
147 / 81 / 10
Регистрация: 04.09.2013
Сообщений: 261
25.09.2013, 10:36 5
да ну сколько людей столько и кодов.
однако простые методы порой небезопасны, вы например постарались сразу себя обезопасить от ошибки доступа памяти. я же полностью это взваливаю на плечи программиста рассчитывая на то, что он то знает что делает
1
25.09.2013, 10:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2013, 10:36

типы данных
какой диапазон данных у main, getch? и какой тип данных у getch?

Типы данных
Помогите пожалуйста решить проблему с типами данных. C++ только начинаю учить,...

Типы Данных
Извиняюсь, за тупой вопрос, но какой самый большой целочисленный тип данных...


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

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

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