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

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

Войти
Регистрация
Восстановить пароль
 
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
#1

Из массива в целое число - C++

03.06.2014, 11:50. Просмотров 278. Ответов 14
Метки нет (Все метки)

Есть вектор
C++
1
vector<byte>
byte - unsigned char
приходи 4 байта.т.е. в векторе 4 элемента и мне надо получить из них int.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 11:50     Из массива в целое число
Посмотрите здесь:

Сформировать строку из заданного массива, превратив каждое целое число в символ, имеющий указанный код - C++
Двухмерный массив содержит целые числа и заполняется случайным образом значениями из интервалa . Пользователь задаёт размерность массива с...

Написать программу, считывающую целое число с клавиатуры и предупреждающую вас, если введено нецелое число. - C++
Написать программу, считывающую целое число с клавиатуры и предупреждающую вас, если введено нецелое число.

Целое положительное число m записывается в 16-ой системе счисления и разряды в этой записи переставляются в обратном порядке. Получившиеся число прини - C++
ребят помогите!!!!Препод задал 20 задач по программированию,и во не могу сделать эту:&quot;Целое положительное число m записывается в 16-ой...

Дано вещественное число A и целое число N - C++
Дано вещественное число A и целое число N (&gt; 0). Вывести 1 + A + A2 + A3 + ... + AN. Begin85. Дано вещественное число A и целое число N (&gt;...

Дано вещественное число A и целое число N (> 0) - C++
Дано вещественное число A и целое число N (&gt; 0). Вывести 1 – A + A2 – A3 + ... + (–1)NAN.

Даны вещественное число x и целое число n > 0 - C++
Прошу помощи: S(x, n)=1-\frac{x}{1!}+\frac{x^2}{2!}-\frac{x^3}{3!}+...+(-1)^n\frac{x^n}{n!}

целое число К - C++
Дано целое число К. Вывести строку описания оценки, соответсвующей числу К(1-плохо, 2-неудовлетворительно, 3-удовлетворительно, 4-хорошо,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
03.06.2014, 11:56     Из массива в целое число #2
memcpy(указатель на вектор,указатель на int,4);
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
03.06.2014, 11:58  [ТС]     Из массива в целое число #3
C++
1
2
 int comm;
                        memcpy(*receiveData.data(),*comm,4);
NMClient.cpp: In member function ‘void* NMClient::Run_Client(void*)’:
NMClient.cpp:116:53: error: invalid type argument of unary ‘*’ (have ‘int’)
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
03.06.2014, 12:02     Из массива в целое число #4
скорее всего как то так должно быть:
C++
1
2
int comm;
memcpy(receiveData.data(),&comm,4);
Добавлено через 1 минуту
а, нет, ошибся, наоборот
C++
1
2
int comm;
memcpy(&comm,receiveData.data(),4);
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
03.06.2014, 12:04     Из массива в целое число #5
А во вчерашней теме не судьба дискуссию продолжить?
Vector<unsigned char> в int
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
03.06.2014, 12:07     Из массива в целое число #6
Цитата Сообщение от diplomat1129 Посмотреть сообщение
приходи 4 байта.т.е. в векторе 4 элемента и мне надо получить из них int.
Байтордер-то какой?
В простейшем случае:
int comm = *(int*)dat.data();
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
03.06.2014, 12:17  [ТС]     Из массива в целое число #7
Извиняюсь, забыл что вчера поднимал тему. ну тогда проще тут продолжать а ту удалять

Добавлено через 7 минут
Странно и в первом и во втором случае опять нули возвращает
В общем клиент который мне шлет байты, в отладчике шлет следующее..он шлет 28 байт.
я принимаю сначала 4 байта.0 0 0 0.тут должен выйти 0. потом принимаю еще 4 байта. там мне приходит 1 0 0 0.тут уже я должен получить 1.ну или хотя бы не 0, чтобы проверку пройти.а у меня в двух проверках нули приходят. или если мне шлют 28 то я за 1 раз могу только 28 принять?я переписываю клиент на с++.он был раньше на шарпах написан.и там этот принцип работает.

Добавлено через 1 минуту
просто если нельзя кусками принимать. то может принять 1 раз и как-то частями значения брать..сначала 4 взять.посмотреть что за число..потом еще 4.
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
03.06.2014, 12:19     Из массива в целое число #8
diplomat1129, Смотря откуда ты данные берешь. Если из сокета, то там можно указать максимальное число байт, которые ты хочешь взять из буфера.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
03.06.2014, 12:20  [ТС]     Из массива в целое число #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vector<byte> resBuffer;
        unsigned char buffer[size];
 
        int res;
        //Receive a reply from the server
        res = recv(sock , &buffer , size , 0);
 
        if( res < 0)
        {
            puts("recv failed");
        }
        /*for(int i = 0; i <= 3; i++){
            cout<<buffer[i];
        }*/
 
        resBuffer.insert(resBuffer.end(), buffer, buffer + size);
        return resBuffer;
ну вот мне клиент шлет одним разом 28 байт..я беру из сокета..я могу взять сначала 4..а потом вызывая еще раз эту функцию с сокетом, взять еще следующие 4?или надо одним разом хапнуть?
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
03.06.2014, 12:24     Из массива в целое число #10
diplomat1129, size это и есть количество байт, которые ты хочешь принять.
Но проще взять указатель на первый байт числа и использовать memcpy, тогда тебе остальные байты мешать не будут.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
03.06.2014, 12:30  [ТС]     Из массива в целое число #11
про size я знаю..интересует, останутся ли данные с сокете.если пришло 28 байт, а я взял 4, то остануться ли остальные 24 ждать пока я их заберу?.и можно пример с memcpy?или наверное роли не сыграет?

Добавлено через 4 минуты
или возможно что при каждом обращении к сокету, когда беру 4 байта я беру одни и теже 4 байта?т.е. надо взять сначала первые 4 байта.при втором обращении к сокету взять например 8 байт.только первые 4 отбросить,т.к. они были уже взяты и смотреть следующие 4?
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
03.06.2014, 12:34     Из массива в целое число #12
diplomat1129, Остальные данные в сокете конечно останутся и будут ждать, пока их извлечешь.
memcpy это просто копирование памяти. Передаешь туда два указателя и количество байт, он из одной области памяти в другую их копирует. Почитай описание в сети.

Добавлено через 42 секунды
diplomat1129, Когда ты из сокета берешь 4 байта, то из буфера эти байты удаляются естественно.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
03.06.2014, 12:38  [ТС]     Из массива в целое число #13
просто там вот приходят сначала 4 байта нули - служебные.потом 4 байта -еще однм команда но уже не нули..следующие 4 байта-идентификатор клиента.следующие 4 это длина имени клиента..а потом идут каждые 2 байта - буква клиента.и вот когда ответ по циклу кидаю на вывод - буквы клиента выводяться..т.е. от другого клиента передача норм приходит..т.е. это я не могу норм команды из ответа извлечь, что получаются и 1 и 2 команда нули..но вторая явно не 0. там 1 0 0 0
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
03.06.2014, 12:40     Из массива в целое число #14
diplomat1129, Косяк значит где то. Берешь отладчик и смотришь что тебе приходит и что ты куда записал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 12:48     Из массива в целое число
Еще ссылки по теме:

Целое число N>0 - C++
Если честно, даже не понял суть задачи..Пока оперирую только вот этим вот кодом: #include &quot;stdafx.h&quot; #include &lt;math.h&gt; #include...

Целое число - C++
Всем привет, у меня тут возник вопрос, мне нужно получить целое число и если полученные данные не явл типом int, то есть числом, то...

проверка на целое число - C++
Можно ли сделать проверку на ввод целого числа, если его тип сразу задается, как int? Просто это массив и другой тип данных не применим,...

Дано целое число - C++
Дано целое число n.Вычислить : S=1/Sin1+2/Sin2+3/Sin3+...+n/Sinn

Дано целое число N (> 0) - C++
Дано целое число N (&gt; 0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K2 &gt; N нужен код С++ :wall:...


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

Или воспользуйтесь поиском по форуму:
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
03.06.2014, 12:48  [ТС]     Из массива в целое число #15
да вот в линуксе сижу..нетбинс косячик в отладчике..тяжело пошагово все отладить..
C++
1
2
int comm;
                        memcpy(&comm, receiveData.data(), 4);
receiveData - это вектор который приходит из функции приема от другого клиента данных..собственно если эту переменную пустить так
C++
1
2
/*for (std::vector<byte>::iterator it = receiveBuff.begin(); it != receiveBuff.end(); ++it)
                        std::cout << ' ' << *it;*/
то имя клиента и выводиться в консоль.но что странно только буквы из всего буфера..хотя там еще команды лежат..в любом слуае вектор не пустой и там лежит мой пришедший буфер и я закидываю в другую область памяти и тут 0 ((

Добавлено через 4 минуты
C++
1
2
for (std::vector<byte>::iterator it = receiveBuff.begin(); it != receiveBuff.end(); ++it)
                        std::cout << ' ' << (int)*it;
только так выводит
0 0 0 0
1 0 0 0

при двух обращениях.собственно я уже близко)
Yandex
Объявления
03.06.2014, 12:48     Из массива в целое число
Ответ Создать тему
Опции темы

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