Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
Есть строка char *sendbuf = "this is a test"; и массивы int masA[100]; for(i=0; i<100; i++) masA[i]=i; int masB[100]; Надо загнать массив masA в строку(начальное значение строки уничтожить) и затем изъять его из строки в массив masB Можно ли это реализовать в visual c++ Если да то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 19:18 |
|
||
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
char* это не строка. В С нету строк. Вообще нету. char* это указатель на массив char'ов. Когда ты задаешь char *sendbuf = "abcd" ты по существу создаешь массив char'ов длиной достаточной для хранения этой строки. A char это маленький int. Очень маленький. В одном int может быть несколько char. Любой char влезет в int, но только int который больше -128 и меньше 127 влезет в char. А в остальном: sendbuf[i] = masA[i]; masB[i] = sendbuf[i] и все. И не забудь что для уверенной работы, твой sendbuf должен по размерам соответствовать размерам остальных массивов. Иначе ты вылезешь за пределы массива и все умрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 19:28 |
|
||
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
И раз собираешься это всё куда-то отсылать, неплохо бы обеспокоиться согласованием endianess. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 19:45 |
|
||
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
Вообще у меня массив из 16 битных значений. То есть может быть до 65535 Как например 50000 передать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 20:09 |
|
||
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
имеется ввиду например masA[37]=50000; чтобы потом в masB тоже получить 50000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 20:11 |
|
||
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
webber81имеется ввиду например masA[37]=50000; чтобы потом в masB тоже получить 50000 Тогда режь int на два байта и записывай один байт в один char, а другой байт в другой char. sendbuf[i] = (masA[j] >> 8) & 0xff; sendbuf[i+1] = masA[j] & 0xff; А потом собираешь из двух байт в одно двух-байтовое целое. masB[j] = (sendbuf[i] << 8) | sendbuf[i+1]; Только не забудь что в этом случае sendbuf вместо простого char должен быть unsigned char. И не забудь что int это не всегда два байта. Это может быть и один и два и четыре и восемь. (пока, больше восьми байт int не делают.) Реальный размер int зависит от компьютера, компилятора, и их настроек. Если хочешь чтобы твой masA содержал именно двух-байтные ячейки, делай массивы short int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2013, 20:33 |
|
||
|
Запись int массива в строку char *sendbuf
|
|||
|---|---|---|---|
|
#18+
ТС может лучше использовать union ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 14:34 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38259075&tid=2020217]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
78ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 200ms |

| 0 / 0 |
