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

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

Войти
Регистрация
Восстановить пароль
 
last nope
8 / 8 / 6
Регистрация: 08.12.2012
Сообщений: 20
#1

Как лучше обрашаться к байтам int ? - C++

08.12.2012, 15:57. Просмотров 345. Ответов 2
Метки нет (Все метки)

надо реализовать aes, что уже было сделано но встал вопрос: при операциях над словами - умножение, таблица подстоновки, сдвиг как лучше обращаться к байтам, что привело к следующим вопорсам...

те слово 32 бита используем int (или для эстетики unsigned int - ui далее, а unsigned char - uc), и так вопрос как обращаться к байтам слова? есть варианты:

C++
1
2
3
4
5
6
7
8
ui q = 0x00112233;
//первый
uc str[4];
memcpy(str, q, 4);
//второй
uc *str = ((char *) &)q; 
//и здесь лучше обращаться как к элементам масива или через указатели:
str[0] /* или */ (*str) //?
Прошу ответить что лучше и почему, меня интересует тот вариант который быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как лучше обрашаться к байтам int ? (C++):

Как считывать информация с файла по байтам - C++
У меня есть файл, выглядит как график, hex-вид : 00000001: 80 01 00 02 00 05 00 02 00 56 80 02 00 03 00 55 00000002: 56 00 00 04 22 00...

Как понять int a(int x,int y, int z)? - C++
какое значение будет у переменной а?

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

Как считать данные в vector<pair<int, pair<int, int>>> arr(m) ? - C++
Здравствуйте! Помогите, как считать данные данные в массив такого типа? vector&lt;pair&lt;int, pair&lt;int, int&gt;&gt;&gt; arr(m) Пытался вот так...

Как заполнить один int пустой массив другим int массивом ? - C++
Можно пример кода :)

Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; struct point { int x,y,z; }; double dlina(point a,point b) { ...

2
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.12.2012, 16:06 #2
C++
1
2
3
4
5
6
7
union {
    unsigned int dword;
    unsigned char byte[4];
} q;
 
q.dword = 0x00112233;
q.byte[0] // ==> 0x33
И за порядком байт в слове следите.
1
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,048
08.12.2012, 16:08 #3
Цитата Сообщение от last nope Посмотреть сообщение
ui q = 0x00112233;
мдя Эстетика
C++
1
2
3
4
5
6
unsigned int i=0x12345678;
unsigned char *c=(unsigned char *)&i;
char aa=c[0];
char ab=c[1];
char ac= c[2];
char ad=c[3];
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2012, 16:08
Привет! Вот еще темы с ответами:

Как передать 0 в функцию типа f (int, int&) - C++
Подскажите, почему при повторных вызовах f остается предыдущее значение S? Т.е. не обнуляется в теле f - {...s=0...} и как его обнулить?...

Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int - C++
// Оператор преобразования #include &lt;iostream&gt; using namespace std; class Counter { public: Counter(): itsVal(0) {} ...

Int vs int fast - как проверить производительность? - C++
Как проверить производительность обычного int и int fast? Существуют ли ещё какие-то &quot;быстрые типы&quot;?

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...


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

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

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