Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-12-2009, 17:09   #1
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
[C++] conversione da unsigned char a string

Salve,
come faccio a trasformare una variabile unsigned char[] in string???
Ho provato con std::string s (reinterpret_cast<const char*> (nome variabile unsigned char), dimensione) ma appena eseguo il programma va in errore!!
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 17:25   #2
Perseverance
Senior Member
 
L'Avatar di Perseverance
 
Iscritto dal: Jul 2008
Messaggi: 8358
Tu hai un vettore di char cioè un char[]. String ha un costruttore di tipo implicito quindi puoi direttamente dare il comando string frase(<vettore di char>) cioè:
Codice:
char a[] = "ARGENTOVIVO81 blablabla";
string b(a);
__________________
System Failure
Perseverance è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 17:39   #3
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
char a[] è lo stesso di unsigned char a[]?????
perche' a me serve convertire unsigned char in string e non char....
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 17:43   #4
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
ho provato quanto mi hai detto..compare un errore "invalid conversion from "unsigned char*" to "const char*"
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 17:57   #5
Perseverance
Senior Member
 
L'Avatar di Perseverance
 
Iscritto dal: Jul 2008
Messaggi: 8358
castalo a char* e riprova come ti ho detto!

char a[] = "ARGENTOVIVO81 blablabla";
string b((char*)a);
__________________
System Failure
Perseverance è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 18:28   #6
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
adesso compila!!ma se mando in esecuzione il programma compare come errore "invalid next size (fast): 0x0804c140"e poi si interrompe!!
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 18:36   #7
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
puo' essere che è legato al fatto che all'inizio la funzione prende in input una stringa che trasformo in unsigned char con la seguente istruzione???

unsigned char Key [16];
string s;
memcpy (Key, s.c_str(),16);

Successivamente Key viene elaborata ed è questa che alla fine devo riconvertire in stringa...
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 18:37   #8
Perseverance
Senior Member
 
L'Avatar di Perseverance
 
Iscritto dal: Jul 2008
Messaggi: 8358
Probabilmente devi appendere al char[] il /0 che indica la fine!
__________________
System Failure
Perseverance è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 18:51   #9
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
scusa la mia poca esperienza, come faccio ad inserire /0 che indica la fine??
dovrei fare:

Key[17]= '/0'; ??

perche' se è cosi' mi da sempre lo stesso errore di invalid next size
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:08   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
C'è ualche motivo per cui hai dichiarato key unsigned char ? Ricordati che in key non ci possono essere byte pari a zero, altrimenti viene interpretato come il carattere di fine stringa.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:11   #11
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
Questa è la funzione che utilizzo:

string KeyExpansion(string s)
{
int i,j;
unsigned char temp[4],k;

memcpy (Key,s.c_str(),16);

for(i=0;i<Nk;i++)
{
RoundKey[i*4]=Key[i*4];
RoundKey[i*4+1]=Key[i*4+1];
RoundKey[i*4+2]=Key[i*4+2];
RoundKey[i*4+3]=Key[i*4+3];
}


while (i < (Nb * (Nr+1)))
{
for(j=0;j<4;j++)
{
temp[j]=RoundKey[(i-1) * 4 + j];
}
if (i % Nk == 0)
{

{
k = temp[0];
temp[0] = temp[1];
temp[1] = temp[2];
temp[2] = temp[3];
temp[3] = k;
}



{
temp[0]=getSBoxValue(temp[0]);
temp[1]=getSBoxValue(temp[1]);
temp[2]=getSBoxValue(temp[2]);
temp[3]=getSBoxValue(temp[3]);
}

temp[0] = temp[0] ^ Rcon[i/Nk];
}
RoundKey[i*4+0] = RoundKey[(i-Nk)*4+0] ^ temp[0];
RoundKey[i*4+1] = RoundKey[(i-Nk)*4+1] ^ temp[1];
RoundKey[i*4+2] = RoundKey[(i-Nk)*4+2] ^ temp[2];
RoundKey[i*4+3] = RoundKey[(i-Nk)*4+3] ^ temp[3];
i++;
}
string b((char*)RoundKey);
}


RoundKey è definita come unsigned char RoundKey[44], mentre Key come unsigned char Key[16]
Senza l'struzione :

string b((char*)RoundKey);

il programma gira, appena la inserisco compare l'errore free() invalid size fast
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:13   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Manca il carattere di fine stringa. Quello è fuori dubbio. Devi quindi dichiarare il vettore di 17 elementi invece di 16.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:15   #13
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
no...non c'è un motivo particolare per cui l'ho dichiarato unsigned char!!!Facendo la stampa a video ho comunque visto che non ci sono byte pari a zero...
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:16   #14
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
Anche RoundKey lo devo dichiarare di 45 invece che di 44??
comunque gia' ho provato ma non capisco perche' l'errore persiste...
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:19   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Vedendo il codice è solo RoundKey che viene passata alla stringa, allora devia aggiungere il carattere di fine stringa solo a quella.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 19:59   #16
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
Aggiungere il carattere di fine stringa significa solo dichiarare la variabile di 45 piuttosto che di 44???
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 20:00   #17
mrwinch
Senior Member
 
Iscritto dal: Mar 2006
Città: Mareno di Piave (TV)
Messaggi: 962
Quote:
Originariamente inviato da ARGENTOVIVO81 Guarda i messaggi
Questa è la funzione che utilizzo:

string KeyExpansion(string s)
{
int i,j;
unsigned char temp[4],k;

memcpy (Key,s.c_str(),16);

for(i=0;i<Nk;i++)
{
RoundKey[i*4]=Key[i*4];
RoundKey[i*4+1]=Key[i*4+1];
RoundKey[i*4+2]=Key[i*4+2];
RoundKey[i*4+3]=Key[i*4+3];
}


while (i < (Nb * (Nr+1)))
{
for(j=0;j<4;j++)
{
temp[j]=RoundKey[(i-1) * 4 + j];
}
if (i % Nk == 0)
{

{
k = temp[0];
temp[0] = temp[1];
temp[1] = temp[2];
temp[2] = temp[3];
temp[3] = k;
}



{
temp[0]=getSBoxValue(temp[0]);
temp[1]=getSBoxValue(temp[1]);
temp[2]=getSBoxValue(temp[2]);
temp[3]=getSBoxValue(temp[3]);
}

temp[0] = temp[0] ^ Rcon[i/Nk];
}
RoundKey[i*4+0] = RoundKey[(i-Nk)*4+0] ^ temp[0];
RoundKey[i*4+1] = RoundKey[(i-Nk)*4+1] ^ temp[1];
RoundKey[i*4+2] = RoundKey[(i-Nk)*4+2] ^ temp[2];
RoundKey[i*4+3] = RoundKey[(i-Nk)*4+3] ^ temp[3];
i++;
}
string b((char*)RoundKey);
}


RoundKey è definita come unsigned char RoundKey[44], mentre Key come unsigned char Key[16]
Senza l'struzione :

string b((char*)RoundKey);

il programma gira, appena la inserisco compare l'errore free() invalid size fast
Nagra? Ndx? Propongo un altro punto di vista: cosa vorresti che facesse la tua funzione "string b((char*)RoundKey);"?
mrwinch è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 20:27   #18
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
vorrei solo copiare la variabile "RoundKey" nella stringa "b" in modo tale da potere passare "b" ad altre funzioni per essere elaborata!!
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2009, 20:43   #19
ARGENTOVIVO81
Member
 
Iscritto dal: Nov 2009
Messaggi: 41
ho provato ad inserire il carattere di fine stringa, ma l'errore persiste!!!suggerimenti????
ARGENTOVIVO81 è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2009, 19:11   #20
mrwinch
Senior Member
 
Iscritto dal: Mar 2006
Città: Mareno di Piave (TV)
Messaggi: 962
Ma sei obbligato ad usare un char*? Perchè non usare il nativo unsigned char*?
mrwinch è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Pannelli solari efficienti oltre il limi...
Qualcomm conferma la collaborazione con ...
OnePlus 16 arriverà il prossimo m...
Dallo scroll condiviso ai quiz con Gemin...
Gli agenti AI stanno superando i limiti:...
Con SAS Viya, gli agenti IA passano dall...
OpenAI prepara 'o', un assistente sempre...
Fra coupon e sconti al check-out, ecco t...
Ninja Foodi MAX 14 in 1 a 329,99€: la mu...
Dario Amodei invitato a cena privata da ...
Poste Italiane sale all'85,82% di TIM: o...
FRITZ!Box 6820 LTE a 59,98€: il router 4...
Minecraft introduce una nuova dimensione...
Grok 4.6, Claude Fable 5.1 e GPT-6 Astra...
Apple: condanna da 5,7 miliardi di dolla...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v