|
|
|
![]() |
|
Strumenti |
![]() |
#41 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
siiii T_T
|
![]() |
![]() |
![]() |
#42 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
sprintf (hexcode, "%01X ", stringa[i] & 0xff);// 0xff);//255 e poi lo converti in ascii |
|
![]() |
![]() |
![]() |
#43 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
uff...adesso nn c capisco niente cn sto codice... T_T
|
![]() |
![]() |
![]() |
#44 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
Codice:
char *x; x=Input->Text.c_str(); int i; sprintf (hexcode, "%01X ", x[i] & 0xff); Undefined symbol 'hexcode' |
![]() |
![]() |
![]() |
#45 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
char hexcode[10]; |
|
![]() |
![]() |
![]() |
#46 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Così dovrebbe funzionare al 100%
![]() Codice:
ostringstream oss; for(int i = 0; i < Input->Text.Length(); ++i) oss << (int)Input->Text.c_str()[i] << " "; Output->Text = oss.str().c_str(); Ultima modifica di cionci : 09-10-2006 alle 19:30. |
![]() |
![]() |
![]() |
#47 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
Quote:
|
|
![]() |
![]() |
![]() |
#48 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
sprintf (hexcode, "%d ", int(stringa[i]) & 0xff); solo una riga di code |
|
![]() |
![]() |
![]() |
#49 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
allora... nella linea rossa:
la parte iniziale è la variabile oss dopo oss ci stanno i << che non ho ben capito a cosa servano ma diciamo che dovrebbe essere 1 specie di assegnazione dopo i << ci stà: (int)Input->Text.c_str()[i] che praticamente trasforma in ascii il carattere presente nella cella di memoria che stiamo esaminando (che cambia ogni volta con il ciclo, aggiungendo +1 all'indicatore variabile "i") dopo (int)Input->Text.c_str()[i] ci stànno nuovamente i << che non ho capito cosa facciano e dopo i << ci sta " "; che se non ho capito male inserisce tra ogni carattere codificato uno spazio... ecco...dimmi tu se ho capito più o meno bene ttt.... |
![]() |
![]() |
![]() |
#50 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Goten_ssj: hai capito bene... << è un operatore che si usa sugli stream... In pratica "butta" quei caratteri nello ostringstram... Input->Text ritorna una AnsiString Input->Text.c_str() ritorna una stringa C, cioè un char * Input->Text.c_str()[i] riotrna l'i-esimo char della stringa (int)Input->Text.c_str()[i] converte il char in intero (i char in C e C++ sono di fatto interi che variano fra -128 e +127, che appunto corrispondono al codice ASCII del carattere) |
|
![]() |
![]() |
![]() |
#51 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
codice finale del programma:
Codice:
char *x; x=Input->Text.c_str(); ostringstream oss; for(int i=0; i<strlen(x); i++) { oss << (int)x[i] << " "; } Output->Text=oss.str().c_str(); ![]() ma oss posso chiamarlo pure in altro modo vero? essendo una variabile.. ![]() |
![]() |
![]() |
![]() |
#52 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo
![]() |
![]() |
![]() |
![]() |
#53 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
spero di poter continuare all'interno di questa discussione...
se volessi tradurre da intero a esadecimale ci sarebbe un comando? avevo trovato una sorta di IntToHex ma dovrei includere un file .pas e non ho la minima idea di come fare... se nn sbaglio l'estensione .pas si riferisce alle librerie del pascal..vero? attendo qualche notizia :P |
![]() |
![]() |
![]() |
#54 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Guarda l'help di AnsiString, c'è un metodo chiamato format...e dovrebbe funzionare come la sprintf e quindi con %x dovrebbe stampare in esadecimale...
In alternativa, sfruttando il C++ standard, dovresti includere iomanip, e poi usare lo ostringstream di prima e formattare la stringa in questo modo: oss << hex << intero; |
![]() |
![]() |
![]() |
#55 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
cioè?
mettiamo caso che io voglia fare 1 programmino cm quello di prima, xò avere l'esadecimale al posto che l'int come faccio? |
![]() |
![]() |
![]() |
#56 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
ostringstream oss; for(int i = 0; i < Edit1->Text.Length(); ++i) oss << hex << (int)Edit1->Text.c_str()[i] << " "; Edit2->Text = oss.str().c_str(); |
![]() |
![]() |
![]() |
#57 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
devo includere anche un'altra libreria vero?
|
![]() |
![]() |
![]() |
#58 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No, non sembra...credevo che servisse iomanip, ma non serve...
|
![]() |
![]() |
![]() |
#59 |
Junior Member
Iscritto dal: Mar 2013
Messaggi: 7
|
Tutto molto bello ma se si inseriscono codici speciali, tipo à,è,ì,ò,ù?
Ora chi mi da uno spunto per tradurre quei caratteri in ascii inseriti all'interno di una stringa in c++?
__________________
CPU: I7 8700K CON CORSAIR H60 RAM: 16GB DDR4 TRIDENTZ RGB @3000 MOBO: MSI GAMING PRO CARBON VGA: MSI GTX 1080TI GAMING X TRIO[color="Blue"] SSD: DREVO 240GB HDD: SEAGATE BARRACUDA 1TB PSU: SEASONIC 750W 80 PLUS PLATINUM CASE: AEROCOOL 1000 BLACK |
![]() |
![]() |
![]() |
#60 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Codice:
#include <iostream> #include <string> int main() { std::string input; std::cout << "Inserisci una stringa: "; std::getline(std::cin, input); std::cout << "Codice ASCII per ogni carattere:" << std::endl; for (char c : input) { std::cout << static_cast<int>(c) << " "; } std::cout << std::endl; return 0; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:09.