18 / 1 / 0
Регистрация: 28.02.2017
Сообщений: 110
1

From int to byte array

24.10.2017, 10:54. Показов 7483. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день
C++
1
2
3
4
5
6
7
8
9
    CString Command;
    byte cm[4];
    
    int Count=0;
    int DECIMAl;
Command = str.Mid(start, end);
            DECIMAL= _ttoi(static_cast<LPCTSTR>(Command));
            cm[Count] = (byte)lol;
            Count++;
Скажите просто привидением типа правильно или есть какой то другой способ.
Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2017, 10:54
Ответы с готовыми решениями:

Двумерный массив <array>. const int value = array.size(); value не константа?
#include &lt;array&gt; #include &lt;iostream&gt; using std::array; using std::cout; /*ФУНКЦИЯ...

Ошибка error: invalid types 'int[int]' for array subscript
Дана строка,содержащая английский текст.Найти количество слов,начинающихся с буквы b. Выдает...

Работа с массивом - Invalid types 'int[int]' for array subscript
Добрый день. Данный код выдает ошибку invalid types 'int' for array subscript в функции в строке...

Ошибка компиляции invalid types ‘int[int]’ for array subscript
Вот сам код. Не понимаю в чем может быть ошибка. #include &lt;iostream&gt; using namespace std; ...

10
127 / 126 / 59
Регистрация: 22.01.2014
Сообщений: 462
24.10.2017, 12:32 2
"From int to byte array - C++"
А порядок байтов имеет значение, наверное имеется ввиду Little Endian?
Можете посмотреть здесь: https://ru.wikipedia.org/wiki/... 0%BE%D0%B2 (Endiannes) .
Если это на платформе IA-32/x86 и имеется ввиду числа в Little-Endian, то можно:
C++
1
2
memcpy(&cm[count],&lol,sizeof(int));
count+=sizeof(int);
Иначе необходимо предварительно целое число переводить в нужный порядок байт посредством указанных в статье функциях ( hton*(), ntoh *() ).
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.10.2017, 16:56 3
Осталось дождаться С++20
http://en.cppreference.com/w/cpp/types/endian
0
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
24.10.2017, 17:08 4
C++
1
2
3
int fromInt = rand();
uint8_t bytes[4]; 
std::memcpy(byte, &fromInt, sizeof(fromInt));
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.10.2017, 17:09 5
Цитата Сообщение от Valeryn Посмотреть сообщение
std::memcpy
Выше уже верно сказано, что не всё так просто. LE или BE по разному данные хранят.
0
34 / 36 / 17
Регистрация: 16.04.2017
Сообщений: 478
Записей в блоге: 4
24.10.2017, 17:13 6
MrGluck, за что отвечает native в с++20?
0
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
24.10.2017, 17:19 7
Цитата Сообщение от MrGluck Посмотреть сообщение
Выше уже верно сказано, что не всё так просто. LE или BE по разному данные хранят.
Автор не уточнил про порядок байт)

Хотя на практике, мне не хватает нативной поддержки hex to string и string to hex, по аналогии Qtшного функционала.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.10.2017, 18:04 8
Цитата Сообщение от Valeryn Посмотреть сообщение
hex to string и string to hex, по аналогии Qtшного функционала
std::to_string + std::stol?
std::stringstream при необходимости
0
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
25.10.2017, 10:08 9
Все равно циклы писать приходиться и свои велосипеды. Плюс учитывать всякие детали, типо что делать, если последний байт передан не полный, типо std::string("FFF"). считать это как "0FFF" или "FFF0" или "FF0F" или "FF"?
Плюс всякие ухищрения, что бы как можно меньше итераций делать.


Кстати по поводу порядка байт.
Я вот сколько не погляжу чужой код, но нигде не вижу ,что бы учитывали порядок байт.
Особенно явно это вижу в криптографических библиотек, связанных с блокчейнами.
Что код на ARM, что на x86, то на AMD64. Передаваемый блоб и хэширование никак не проверяет порядок байт.
Да и библиотеки по работе с modbus протоколом, тоже не учитывают порядок байт на стороне программы. (только на стороне самого modbus проверяется порядок байт иногда).
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
25.10.2017, 10:23 10
Цитата Сообщение от Valeryn Посмотреть сообщение
Я вот сколько не погляжу чужой код, но нигде не вижу ,что бы учитывали порядок байт.
Любое сетевое приложение, как правило, это учитывает.
0
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
25.10.2017, 12:13 11
Цитата Сообщение от Croessmah Посмотреть сообщение
Любое сетевое приложение, как правило, это учитывает.
сеть то понятно. А что на счет того, что внутри происходит?
Например тот же CryptoNight у monero. Взять их функцию slow_hash - порядок байт я не видел, что бы где то проверялся.
у XMR-CPU для amd64 (и его реализация XMRig для 32бит) под все ОС тоже не видел проверок. А там полно преобразований 8битных массивов в 64 битныее массивы. 128 битные операции.

Например
C++
1
2
3
4
5
uint8_t[100] blob;
/*..*/
uint32_t *val = (uint32_t*)(blob+39);
 
(*val)++;
Если у нас будет обратный порядок байт, то полученный хэш будет не верной по отношению к значению.
0
25.10.2017, 12:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2017, 12:13
Помогаю со студенческими работами здесь

Ошибка: error: invalid types ‘int[int]’ for array subscript
Выпрыгивает ошибка: &quot;main.cpp: In function ‘int main()’: main.cpp:33:12: error: invalid types...

Ошибка: invalid types ‘int[int]’ for array subscript
Всем доброго дня, после компиляции выводится ошибка, которая меня вводит в ступор. #include...

Error: invalid types 'int[int]' for array subscript
#include &lt;iostream&gt; using namespace std; int main() { setlocale(0,&quot; &quot;); char ch; bool...

Error: invalid types 'int[int]' for array subscript
Написал программу список студентов через классы, но на вводе и выводе выдаёт ошибку, не могу найти...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru