Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для GBIT
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223

Забить char-строку 16-ричными числами из генератора случайных чисел

19.06.2012, 16:59. Показов 4015. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
чет не могу понять как?
есть буфер
C++
1
char                    packetbuff[24];
его нужно забить из генератора случайных чисел.
10ричными не вопрос

C++
1
2
3
4
5
6
7
8
9
char                    packetbuff[24];
int                 i=0, m=10;
srand ((unsigned)time(NULL));
for(i=0;i<24;i++) {                 
    // рандом чисел в интервале [0;m]
    a=rand()%(2*m+1)/2;
 
    packetbuff[i]=a;
}

как 16ричными заполнить?

Добавлено через 13 минут
я так понимаю тут нужно либо как-то особо создавать строку или при записи нужно перевод делать в 16ричное. или все сразу?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2012, 16:59
Ответы с готовыми решениями:

Заполнение матрицы целыми числами с помощью генератора случайных чисел
1.Матрицу 8*8 заполнить целыми числами с помощью генератора случайных чисел. 2.Найти определитель. 3.Найти min и max элементы матрицы. ...

Заполнить файл целыми 30 числами, полученными с генератора случайных чисел
Заполнить файл целыми 20 числами, полученными с помощью генератора случайных чисел в интервале от 0 до 200. Вывести результат на экран. ...

Заполнить файл n натуральными числами с помощью генератора случайных чисел
Как-то даже неудобно спрашивать. Ребят, но если не трудно помогите пожалуйста. 1. Заполнить файл n натуральными числами с помощью...

4
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
19.06.2012, 17:15
заполни массив обычными десятичными числами,а при выводе используй манипулятор потока hex
C++
1
cout << hex << packetbuff[i];
0
 Аватар для GBIT
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
19.06.2012, 17:59  [ТС]
нет нет. мне именно ЗАПОЛНИТЬ нужно 16ричными

вывести на экран то я и сам могу. я пакет сетевой наполняю

очень по индусски но вот так делаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
srand ((unsigned)time(NULL));
    for(i=0;i<24;i++) {                         /// этот цикл забивает первые 12 байт. это MAC Dest & MAC Source
        // рандом чисео в интервале [0;m]
        a=rand()%(2*m+1)/2;
        
        if(a==0)
            packetbuff[i]='0';
        else
            // перевод в 16 а
            if(a>10) {
                packetbuff[i]='A';
                if(a>11) {
                    packetbuff[i]='B';
                    if(a>12) {
                        packetbuff[i]='C';
                        if(a>13) {
                            packetbuff[i]='D';
                            if(a>14) {
                                packetbuff[i]='E';
                                if(a>15) {
                                    packetbuff[i]='F';
                                }
                            }
                        }
                    }
                }
            }
            else
                packetbuff[i]=(char)a;
Добавлено через 11 минут
ой. вот так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
srand ((unsigned)time(NULL));
    for(i=0;i<24;i++) {                         /// этот цикл забивает первые 12 байт. это MAC Dest & MAC Source
        // рандом чисео в интервале [0;m]
        a=rand()%(2*m+1)/2;
        
        if(a==0)
            packetbuff[i]='0';
        else
            // перевод в 16 а
            if(a>9) {
                packetbuff[i]='A';
                if(a>10) {
                    packetbuff[i]='B';
                    if(a>11) {
                        packetbuff[i]='C';
                        if(a>12) {
                            packetbuff[i]='D';
                            if(a>13) {
                                packetbuff[i]='E';
                                if(a>14) {
                                    packetbuff[i]='F';
                                }
                            }
                        }
                    }
                }
            }
            else
                packetbuff[i]=(char)a;
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
19.06.2012, 18:06
В общем-то какая-то каша пока. Но если надо заполнить строку символами шестнадцатиричных чисел, то это как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    int const N = 24;
    char const* digits = "0123456789ABCDEF";
    char hexstring[N+1];
 
    srand(time(NULL));
 
    for (int i = 0; i < N; ++i)
        hexstring[i] = digits[random() & 15];
    hexstring[N] = '\0';
    
    std::cout << "random hex string: " << hexstring << std::endl;
 
    return 0;
}
онлайн результат:
http://liveworkspace.org/code/... 1873afbb14

Только при чём здесь сетевой пакет... Ну да ладно.
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
19.06.2012, 18:16
Можно воспользоваться ostringstream:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <cassert>
 
 
int main() {
   std::size_t const hexDigits = 16;
   std::size_t const bufferSize = 24;
   char buffer[bufferSize];
   std::ostringstream oss;
   
   std::srand(std::time(0));
   for (std::size_t i = 0; i != bufferSize; ++i) {
      oss << std::hex << std::rand() % hexDigits;
   }
   assert(oss.str().length() >= bufferSize);
   std::memcpy(buffer, oss.str().c_str(), bufferSize);
   
   for (std::size_t i = 0; i != bufferSize; ++i) {
      std::cout << buffer[i];
   }
   std::cout << std::endl;
}
http://liveworkspace.org/code/... 815f043e14

Добавлено через 6 минут
или имелось в виду что-то другое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2012, 18:16
Помогаю со студенческими работами здесь

Забиваем строку 16-ричными числами и выводим на экран (генерируем МАС)
генерируется мак адрес и выводится на экран. но вот только как то не корректно он выводится #include &lt;time.h&gt; #include...

Заполнить файл целыми 30 числами, полученными с генератора случайных чисел в интервале от -100 до 100
1.Заполнить файл целыми 30 числами, полученными с помощью генератора случайных чисел в интервале от -100 до 100. Вывести на экран...

Заполнить файл f натуральныи числами,полученными с помощю генератора случайных чисел
Заполнить файл f натуральныи числами,полученными с помощю генератора случайных чисел.Найти количество удвоенных нечетных чисел среди...

Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел.
Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, исключив повторные...

Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел
Помогите пожалуйста с задачей не понимаю как решать ее дальше?? Заполнить файл f целыми числами, полученными с помощью генератора...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru