70 / 70 / 55
Регистрация: 04.06.2016
Сообщений: 235
1

Как char[] перевести в битовую маску long long(64 бита) и наоборот?

16.07.2017, 00:26. Показов 2077. Ответов 9
Метки нет (Все метки)

Как char[8] перевести в битовую маску long long(64 бита) и наоборот?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2017, 00:26
Ответы с готовыми решениями:

Перевести long long unsigned int в массив char
Подскажите, пожалуйста, как превратить число типа long long unsigned int в массив символов? Каждый...

Перевести большой массив char в long long
Здравствуйте. Есть массив char c 3145360828. Надо его в int перевести. Пробовал с atoi, вместо...

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в...

Как преобразовать const char * в long в С++, 0xE0E040BF в long
Помогите пожалуйста преобразовать текст в число на C++ const char * value=cmd; long ircode = ...

9
Вездепух
Эксперт CЭксперт С++
10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
16.07.2017, 01:34 2
Цитата Сообщение от Encephalopathy Посмотреть сообщение
Как char[8] перевести в битовую маску long long(64 бита) и наоборот?
Никак.

Во-первых, битовые маски принято хранить в беззнаковых типах. Во-вторых, какой вам нужен порядок байтов в маске вы не удосужились сообщить. Без этого вопрос бессмыслен.

C++
1
2
3
4
5
6
unsigned char c8[8];
unsigned long long ull;
...
static_assert(sizeof c8 == sizeof ull);
memcpy(&ull, c8, sizeof c8); // туда 
memcpy(c8, &ull, sizeof c8); // обратно
1
70 / 70 / 55
Регистрация: 04.06.2016
Сообщений: 235
16.07.2017, 01:41  [ТС] 3
TheCalligrapher, Порядок?Не знаю.Цель - перевести строку в битовую маску обработать её алгоритмом шифрования и перевести обратно в строку.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11713 / 7220 / 1710
Регистрация: 25.07.2009
Сообщений: 13,221
16.07.2017, 03:39 4
Странным вопросам - странные решения!
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <iomanip>
 
int main() {
    char str[] = "12345678";
    
    std::cout << str << " <-> " << std::hex << *(long long int*)str << std::endl;
    
    return 0;
}
Код
$ ./a.out 
12345678 <-> 3837363534333231
0
Вездепух
Эксперт CЭксперт С++
10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
16.07.2017, 05:08 5
Цитата Сообщение от Encephalopathy Посмотреть сообщение
перевести строку в битовую маску
"Строку"???! Откуда вдруг взялась строка и почему в исходном вопросе о строке нет ни слова?
0
70 / 70 / 55
Регистрация: 04.06.2016
Сообщений: 235
16.07.2017, 12:35  [ТС] 6
TheCalligrapher, Ну массив чар в каком то смысле строка,нет?

Добавлено через 4 минуты
TheCalligrapher, Строку планирую разбить на блоки по 8 char и каждый обрабатывать.
0
Вездепух
Эксперт CЭксперт С++
10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
16.07.2017, 13:04 7
Цитата Сообщение от Encephalopathy Посмотреть сообщение
Ну массив чар в каком то смысле строка,нет?
Да нет, совсем не обязательно. Массив char это просто массив маленьких целых, массив байтов. Будет ли это строкой или нет - зависит только от вас.

А тот факт, что размер массива у вас совпадает с "типичным" размером long long - 8 байтов - уж совсем сбивает с толку - мыслей о строке не возникает вообще.

Цитата Сообщение от Encephalopathy Посмотреть сообщение
Строку планирую разбить на блоки по 8 char и каждый обрабатывать.
Строка в массиве char[8] будет иметь максимальную длину 7. Откуда взялся такой странный размер блока для разбиения?
0
70 / 70 / 55
Регистрация: 04.06.2016
Сообщений: 235
16.07.2017, 13:11  [ТС] 8
TheCalligrapher, строка будет произвольной длины,я её разобью на блоки по 64 бита,обработаю их,сложу и добавлю нуль-терминатор в конце(он не будет участвовать в обработке).
0
Вездепух
Эксперт CЭксперт С++
10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
16.07.2017, 13:19 9
Цитата Сообщение от Encephalopathy Посмотреть сообщение
TheCalligrapher, строка будет произвольной длины,я её разобью на блоки по 64 бита,обработаю их,сложу и добавлю нуль-терминатор в конце(он не будет участвовать в обработке).
Ну тогда снова возникает вопрос, что именно вы имели в виду под переводом char[8] в long long. Похоже, что то, что я написал в моем превом ответе - это и есть то, что нужно.
0
70 / 70 / 55
Регистрация: 04.06.2016
Сообщений: 235
16.07.2017, 13:29  [ТС] 10
TheCalligrapher, Да это то что нужно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2017, 13:29
Помогаю со студенческими работами здесь

Как преобразовать char[8] к unsigned long long?
Требуется выполнить преобразование char к unsigned long long и обратно

Как long перевести в char?
У меня дата и время в формате long пишу так sprintf(buf, &quot;%d&quot;, p); MessageBoxA(NULL, buf,...

Преобразование массива char в массив long long
Имеется большой массив char, в котором содержатся числа. Нужно максимально быстро извлечь их и...

Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s[]) ) и тестирующую
Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном...

Не понятный undefined reference to `unsigned long long f<unsigned long long, void>
test.cpp: #include &lt;iostream&gt; template &lt;typename FormalType, typename FactType = typename...

long long r char[] __int64
Добрый день возник следующий вопрос: мне требуется преобразовать тип long long в char, при этом код...


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

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

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