Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запись int массива в строку char *sendbuf / 8 сообщений из 8, страница 1 из 1
15.05.2013, 19:18
    #38259061
webber81
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
Есть строка
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++ Если да то как?
...
Рейтинг: 0 / 0
15.05.2013, 19:28
    #38259075
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
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 должен по размерам соответствовать размерам остальных массивов. Иначе ты вылезешь за пределы массива и все умрет.
...
Рейтинг: 0 / 0
15.05.2013, 19:45
    #38259088
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
И раз собираешься это всё куда-то отсылать, неплохо бы обеспокоиться согласованием endianess.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.05.2013, 20:09
    #38259114
webber81
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
Вообще у меня массив из 16 битных значений.
То есть может быть до 65535
Как например 50000 передать?
...
Рейтинг: 0 / 0
15.05.2013, 20:11
    #38259117
webber81
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
имеется ввиду например
masA[37]=50000;
чтобы потом в masB тоже получить 50000
...
Рейтинг: 0 / 0
15.05.2013, 20:33
    #38259146
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
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.
...
Рейтинг: 0 / 0
16.05.2013, 14:34
    #38260349
Кот Чеширский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
ТС может лучше использовать union ?
...
Рейтинг: 0 / 0
16.05.2013, 16:53
    #38260682
nik_xxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись int массива в строку char *sendbuf
Кот Чеширский,

А что изменится от того, что у двух структур будет одинаковая длина?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запись int массива в строку char *sendbuf / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]