русский
Germany.ruForen → Архив Досок→ Programmierung

unsigned char*

196  1 2 alle
kashej постоялец07.04.07 16:43
kashej
NEW 07.04.07 16:43 
Народ, подскажите, плиз, как соединить две строки типа unsigned char. Раньше не задумывался над этим а теперь понадобилось.
http://denis-aristov.ucoz.com
#1 
gendy патриот07.04.07 18:13
gendy
NEW 07.04.07 18:13 
in Antwort kashej 07.04.07 16:43
вообще-то unsigned char* это не строка - это zeiger (указатель) , который может применяться для указания начала строки
с связать две строки в простейшем варианте можно функцией strcat(unsigned char* ,unsigned char* ) которая возвращает указатель на начало получившейся строки unsigned char* (или 0 при ошибке)

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#2 
kashej постоялец07.04.07 18:45
kashej
NEW 07.04.07 18:45 
in Antwort gendy 07.04.07 18:13
такая функция мне известна, но она имеет другие параметры:
char *strcat(char *s1, const char * s2);
http://denis-aristov.ucoz.com
#3 
gendy патриот07.04.07 19:03
gendy
NEW 07.04.07 19:03 
in Antwort kashej 07.04.07 18:45
вам шашечки или ехать?
эту функцию вполне можно применить с указанным типом переменной - в крайнем случае прид╦тся привести типы - хотя я сомневаюсь
const означает что значение переменной нельзя изменить (константа) - но нам это и неинтересно
unsigned означает что переменная не может принимать отрицательные значения (0-255) но так как мы работаем с указателем, а не с самой переменной
то это тоже неинтересно

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#4 
kashej постоялец07.04.07 19:29
kashej
NEW 07.04.07 19:29 
in Antwort gendy 07.04.07 19:03
действительно, приведение типов решает проблему. спасибо
http://denis-aristov.ucoz.com
#5 
  vadim гость07.04.07 21:17
NEW 07.04.07 21:17 
in Antwort kashej 07.04.07 16:43
язык-то какой? С или С++?
#6 
  Chipolino местный житель08.04.07 09:53
NEW 08.04.07 09:53 
in Antwort vadim 07.04.07 21:17
Васик , непонятно чтоли .
#7 
  vadim гость08.04.07 13:45
NEW 08.04.07 13:45 
in Antwort Chipolino 08.04.07 09:53
Хамите, парниша! И нет, непонятно. Если С - то strcat сойдёт, если С++ - то есть более надёжные методы.
#8 
  Chipolino местный житель08.04.07 14:19
NEW 08.04.07 14:19 
in Antwort vadim 08.04.07 13:45
Например ? Только без упаковки в классы , ок .
К автору топика . А почему собственно unsigned char* ,а не char* ?
#9 
  vadim гость08.04.07 14:52
NEW 08.04.07 14:52 
in Antwort Chipolino 08.04.07 14:19
Если это С++, то следовало использовать std::vector (ну или std::deque). Объяснять, как слить вместе два вектора надо?
#10 
  Chipolino местный житель08.04.07 16:09
NEW 08.04.07 16:09 
in Antwort vadim 08.04.07 14:52
Конечно объясни , о мудрейший . ;-)
И насколько быстрее быстрее это будет работать по сравнению с strcat/strncat .
#11 
kashej постоялец08.04.07 16:24
kashej
NEW 08.04.07 16:24 
in Antwort Chipolino 08.04.07 16:09
мне нужно в любом случае использовать тип unsigned char, потому что он удобен для передачи сообщений по сети.
http://denis-aristov.ucoz.com
#12 
  Chipolino местный житель08.04.07 22:20
08.04.07 22:20 
in Antwort kashej 08.04.07 16:24
В ответ на:

мне нужно в любом случае использовать тип unsigned char, потому что он удобен для передачи сообщений по сети.

Не знаю чем ты занимаешься , но работать со строками как unsigned char* - плохая идея .
Хотя бы из-за соображений платформонезависемости.
#13 
kashej постоялец08.04.07 23:16
kashej
NEW 08.04.07 23:16 
in Antwort Chipolino 08.04.07 22:20
Я пишу один протокол на прикладном уровне.
А что касается unsigned char... разве он зависит от платформы? Насколько я знаю, то он содержит 1 байт данных. Или я не прав?
http://denis-aristov.ucoz.com
#14 
  vadim гость09.04.07 01:21
NEW 09.04.07 01:21 
in Antwort Chipolino 08.04.07 16:09
Вопрос здесь совершенно не в скорости, скорость будет сравнимой, и разница абсолютно пренебрежимой. Суть в том, насколько то, или иное решение подвержено ошибкам. И вот здесь-то стандартный вектор в разы лучше.
#15 
  Chipolino местный житель09.04.07 10:31
NEW 09.04.07 10:31 
in Antwort kashej 08.04.07 23:16
В ответ на:

А что касается unsigned char... разве он зависит от платформы? Насколько я знаю, то он содержит 1 байт данных. Или я не прав?

char такого же размера если что :-)
Если ты работаешь именно с набором символов , то пользуйся char* .И да это зависит от платформы .
#16 
  Chipolino местный житель09.04.07 10:35
NEW 09.04.07 10:35 
in Antwort vadim 09.04.07 01:21
В ответ на:

Вопрос здесь совершенно не в скорости, скорость будет сравнимой, и разница абсолютно пренебрежимой. Суть в том, насколько то, или иное решение подвержено ошибкам. И вот здесь-то стандартный вектор в разы лучше.

Значит ты считаешь , что вызов конструктора и деструктора для каждой строки , для например 100000 строк , обойдётся бесплатно ?
И почему собственно вектор ? а не стринг .
ОО не панацея .
#17 
kashej постоялец09.04.07 11:28
kashej
09.04.07 11:28 
in Antwort Chipolino 09.04.07 10:31
В битовые поля сообщений не содержат отрицательные значения, поэтому unsigned char удобней для кодирования данных.
Вот например, общий заголовок сообщения:
В ответ на:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ver | Flags | Message-Type | Message-Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: PCEP message common header

А по поводу размера char - еще ни разу не слышал, что он может быть еще чем-то кроме байта.
http://denis-aristov.ucoz.com
#18 
Murr коренной житель09.04.07 11:43
Murr
NEW 09.04.07 11:43 
in Antwort kashej 08.04.07 16:24
потому что он удобен для передачи сообщений по сети.
------
Ну ка, ну ка - объясни, плс, чем удобнее, чем все другие типы?!!
Наилучшим из объяснений, которое мне доводилось слышать по этому поводу, было то, что не надо формировать отдельный пакет для передачи знака... Товарищ, выдавший сие, переучивался с КОБОЛа, т.ч. ему простительно...
#19 
Murr коренной житель09.04.07 11:46
Murr
NEW 09.04.07 11:46 
in Antwort Chipolino 09.04.07 10:31
Если ты работаешь именно с набором символов , то пользуйся char* .И да это зависит от платформы .
------
Эээ... если не ошибаюсь, то в конечном варианте при оперировании с сокетами все одно все будет кастится к VOID*...
#20 
1 2 alle