View Full Version : [c\c++] inizializzazione stringa
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00"; //0->9
+ "\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06"; //10->23
+ "\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00"; //24->37
+ "\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00"; //38->52
+ "\x00\x00"; //52->54
così è bello da vedere ma non funziona, come mai??
se invece prendo tutti i valori e li metto in fila indiana funziona....
:cry:
come posso fare?
grazie mille
stai programmando in c++ nn in java!!!
nn esiste l'operator + per i char[] (anzi mesa che nn esiste manco in java l'operator + per i char[])
comunque devi fare in modo di mettere tutto su una linea !
oppure fare l'escape del'invio!
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00\
\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06\
\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00";
stai programmando in c++ nn in java!!!
nn esiste l'operator + per i char[] (anzi mesa che nn esiste manco in java l'operator + per i char[])
comunque devi fare in modo di mettere tutto su una linea !
oppure fare l'escape del'invio!
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00\
\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06\
\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00";
proprio quello che volevo, grazie ;)
tomminno
13-12-2008, 18:30
Se non hai sbagliato a postare il codice, è sbagliato l'operatore somma, tra l'altro applicato senza uno degli operatori.
Dovresti usare strcat:
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00"; //0->9
strcat(buffer,"\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06"); //10->23
strcat(buffer,"\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00"); //24->37
strcat(buffer,"\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00"); //38->52
strcat(buffer,"\x00\x00"); //52->54
Dovresti usare strcat:
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00"; //0->9
strcat(buffer,"\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06"); //10->23
strcat(buffer,"\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00"); //24->37
strcat(buffer,"\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00"); //38->52
strcat(buffer,"\x00\x00"); //52->54
no, perché in questo caso strcat sega tutto quello che viene dopo uno zero, che invece va mantenuto; ad esempio, la seconda linea la concatenerebbe alla prima tagliando via gli ultimi 5 bytes della prima. in generale strcat lavora con stringhe null-terminated, quindi non va bene con gli array di bytes contenenti anche zeri.
DanieleC88
14-12-2008, 03:27
no, perché in questo caso strcat sega tutto quello che viene dopo uno zero, che invece va mantenuto; ad esempio, la seconda linea la concatenerebbe alla prima tagliando via gli ultimi 5 bytes della prima. in generale strcat lavora con stringhe null-terminated, quindi non va bene con gli array di bytes contenenti anche zeri.
Esatto, conoscendone a priori la lunghezza è preferibile memcpy() se ci sono zeri.
secondo me la soluzione piu comodo è questo ora che la conosco:
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00" \
"\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06" \
"\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
"\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00" \
"\x00\x00";
occhio al doppio apice ;)
è cosi:
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00\
\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06\
\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00";
e nn cosi :
char buffer [55] = "\x42\x4d\x36\x39\xb1\x00\x00\x00\x00\x00" \
"\x36\x00\x00\x00\x28\x00\x00\x00\xe0\x08\x00\x00\xa8\x06" \
"\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
"\xc4\x0e\x00\x00\xc4\x0e\x00\x00\x00\x00\x00\x00\x00\x00" \
"\x00\x00";
mmhhh capito... ;)
però a me funziona anche con il doppio apice:p
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.